因此,我有一个简单的控制台程序可以读取考试成绩并打印出平均成绩和成绩。到目前为止,它是以下内容:
public static void Main ()
{
int sum = 0;
int count = 0;
double average = 0;
Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");
string scores = Console.ReadLine ();
while (scores != "-99") {
sum += int.Parse (scores);
count++;
scores = Console.ReadLine ();
}
if (scores == "-99") {
average = sum / count;
if (average >= 90)
Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average);
Console.WriteLine(....more scores etc...);
现在,我想使用TryParse检查无效条目。我以为我会先在另一个while循环中加入另一个循环,然后像这样更改原始的循环:
Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");
string scores = Console.ReadLine ();
while (int.TryParse(scores, out numbers) == false){
Console.WriteLine("Please enter a valid integer")
scores = Console.ReadLine();
sum += int.Parse(scores);
count++;
}
while (scores != "-99" && int.TryParse(scores, out numbers) == true) {
sum += int.Parse (scores);
count++;
scores = Console.ReadLine ();
}
if (scores == "-99") {
average = sum / count;
if (average >= 90)
Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average); ...etc...
这里的问题是,如果用户首先输入有效条目,然后输入无效条目,则编译器将无法返回到第一个while循环来检查无效条目。所以我试图交换while循环的位置。但这具有相同的效果。输入无效的条目后,它不能返回到第一个while循环来检查有效的条目。答案很可能很简单,但我被困住了。
您遇到的问题是,你从第一循环时打破TryParse
的回报true
,但没有求助于重新进入循环。相反,您应该嵌套循环。带有前哨的循环应该是外部循环,验证并提示用户的循环应该是内部循环。这是一个例子:
while(scores != "-99")
{
scores = Console.ReadLine();
while((int.TryParse(scores, out numbers) == false)
{
//validation failed, re-prompt user for better number
Console.WriteLine("Bad value, try again")
scores = Console.ReadLine()
}
//do stuff here with the valid score value
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句