c# CONSOLE.read()
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;classstudent{publicstrin...
using System; using System.Collections.Generic; using System.Text; class student { public string name; double grade=0; String rate = ""; public void setgrade(double grade) { this.grade = grade; switch((int)grade/10) { case 8:case 9:case 10: rate="优";break; case 6:case 7:rate="良";break; case 1:case 2:case 3:case 4:case 5:rate="差";break; } } public void showMyGrade() { Console.WriteLine("{0}'s grade is:{1}.And {0}'s rate is:{2}", name, grade,rate); } } namespace Grade { class Program { static void Main(string[] args) { student kate = new student(); kate.name = "kate"; Console.WriteLine("请输入kate的成绩:"); kate.setgrade(Double.Parse(Console.ReadLine())); student mary = new student(); mary.name = "mary"; Console.WriteLine("请输入mary的成绩:"); mary.setgrade(Double.Parse(Console.ReadLine())); student tom = new student(); tom.name = "tom"; Console.WriteLine("请输入tom的成绩:"); tom.setgrade(Double.Parse(Console.ReadLine())); int buf; Console.WriteLine("请输入你要查询的学生首字母"); while( (buf = Console.Read())!=-1) { switch((char)buf) { case 't':tom.showMyGrade();break; case 'k':kate.showMyGrade();break; case 'm':mary.showMyGrade();break; case 'x': return; default: Console.WriteLine("没有该学生");break; } Console.WriteLine("请输入你要查询的学生首字母"); } } } } 运行下您就知道有什么问题。还有,别叫我改为ReadLine()。我就用Read()
展开
1个回答
展开全部
用Read()也不是不可以,不过Read()要在回车之后才开始处理,也就是说,在查询的时候,如果输入t,然后回车,实际上,输入了3个字符,
分别是字符x、回车(13)、换行(10)。
所以,在输出结果之后,还连续输出两次没有该学生。
把你的程序稍做修改就可以了。
在循环中忽略回车了换行这两个字符。
while
((buf
=
Console.Read())
!=
-1)
{
switch
((char)buf)
{
case
't':
tom.showMyGrade();
break;
case
'k':
kate.showMyGrade();
break;
case
'm':
mary.showMyGrade();
break;
case
'x':
return;
case
(
char
)
13:
case
(
char
)
10:
continue;
default:
Console.WriteLine("没有该学生");
break;
}
Console.WriteLine("请输入你要查询的学生首字母");
}
如果编译出错,就分开写
case
(
char
)
13:
continue;
case
(
char
)
10:
continue;
分别是字符x、回车(13)、换行(10)。
所以,在输出结果之后,还连续输出两次没有该学生。
把你的程序稍做修改就可以了。
在循环中忽略回车了换行这两个字符。
while
((buf
=
Console.Read())
!=
-1)
{
switch
((char)buf)
{
case
't':
tom.showMyGrade();
break;
case
'k':
kate.showMyGrade();
break;
case
'm':
mary.showMyGrade();
break;
case
'x':
return;
case
(
char
)
13:
case
(
char
)
10:
continue;
default:
Console.WriteLine("没有该学生");
break;
}
Console.WriteLine("请输入你要查询的学生首字母");
}
如果编译出错,就分开写
case
(
char
)
13:
continue;
case
(
char
)
10:
continue;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询