繁体   English   中英

我是编程和 C# 的新手,我在学校作业中得到了错误的输出

[英]I am new to programming and C#, I am getting the wrong output for school homework

int grade, counter = 0;
Console.Write("Please enter a grade");
grade = int.Parse(Console.ReadLine());
if (grade >= 60 && grade != 101)
{
    counter++;
}
while (grade != 101)
{
    if (grade >= 60 && grade != 101)
    {
        counter++;
    }
    Console.WriteLine("Please enter another grade, if you no longer wish to enter grades, enter '101' ");
    grade = int.Parse(Console.ReadLine());
}
Console.WriteLine("There are " + counter + " grades that are over 60");

这会计算收到的分数超过 60 的数量,我使用计数器来显示和计算它们并告诉程序完成,您输入“101”

为什么输入:90 1 101 导致计数器等于 2?

看评论:

grade = int.Parse(Console.ReadLine());
if (grade >= 60 && grade != 101) // You check first input and ...
{
    counter++; // increment counter (to 1 because it was 90), then
}
while (grade != 101) // this is true ...
{
    if (grade >= 60 && grade != 101) // you check the >>first input<< _again_ ...
    {
        counter++;  // and increment counter a second time!
    }
    Console.WriteLine("Please enter another grade, if you no longer wish to enter grades, enter '101' ");
    grade = int.Parse(Console.ReadLine());
}
Console.WriteLine("There are " + counter + " grades that are over 60");

您通常会使用一个循环来检查其主体(do..while)之后的条件或使第一次检查通过。 无论哪种方式,您都希望在循环内的开始处获得一次输入。

有点像这样:

// It's considered cleaner to have each var declared in its respective line:
int grade = 0;
int counter = 0;
do
{
    Console.WriteLine("Please enter grade, if you no longer wish to enter grades, enter '101' ");
    if(int.TryParse( Console.ReadLine(), out grade )) // << never "trust" user input!
    {
        if (grade >= 60 && grade != 101)
        {
            counter++;
        }
    }
    else
    {
         Console.WriteLine("Please enter integer numbers, only! ('101' to exit.)");
    }
}
while( grade != 101 );

Console.WriteLine("There are " + counter + " grades that are over 60");
// While it doesn't make much of a difference _in this case_, you may also consider these alternatives:
// Console.WriteLine("There are {0} grades that are over 60", counter);
// Console.WriteLine($"There are {counter} grades that are over 60");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM