Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于我的c#作业练习的问题(不能使用数组)_C#_If Statement_While Loop - Fatal编程技术网

关于我的c#作业练习的问题(不能使用数组)

关于我的c#作业练习的问题(不能使用数组),c#,if-statement,while-loop,C#,If Statement,While Loop,我的if语句在显示全班最低分数时遇到问题。有时有效,有时不取决于我如何输入分数 int n, count = 0, grade = 0, average = 0, highest = 0, lowest = 0, low = 0; int classgrade = 0; Console.Write("enter amount of students: "); n = int.Parse(Console.ReadLine()); while (n != 0) { Console.Write(

我的if语句在显示全班最低分数时遇到问题。有时有效,有时不取决于我如何输入分数

int n, count = 0, grade = 0, average = 0, highest = 0, lowest = 0, low = 0;
int classgrade = 0;
Console.Write("enter amount of students: ");
n = int.Parse(Console.ReadLine());
while (n != 0)
{
   Console.Write("enter student mark: ");
   grade = int.Parse(Console.ReadLine());
   count++;
   n = n - 1;
   classgrade = classgrade + grade;
   average = classgrade / count;

   if (grade > highest)
      highest = grade;
   else 
      low = grade;
   if (low < grade)
      lowest = low;
}
Console.WriteLine("Average mark: {0}",average);
Console.WriteLine("Highest mark: {0}", highest);
Console.WriteLine("Lowest mark: {0}", lowest);
Console.ReadLine();
int n,计数=0,等级=0,平均=0,最高=0,最低=0,最低=0;
int classgrade=0;
控制台。写(“输入学生人数:”;
n=int.Parse(Console.ReadLine());
而(n!=0)
{
控制台。写入(“输入学生分数:”);
grade=int.Parse(Console.ReadLine());
计数++;
n=n-1;
classgrade=classgrade+等级;
平均值=等级/计数;
如果(等级>最高)
最高=等级;
其他的
低=等级;
如果(低<等级)
最低=低;
}
WriteLine(“平均标记:{0}”,平均);
WriteLine(“最高标记:{0}”,最高);
WriteLine(“最低标记:{0}”,最低);
Console.ReadLine();

您的代码中有一些问题,我已经开始写评论,但是评论太长了,所以我将其转换为答案

我注意到的第一件事是,您正在使用
int.Parse
从用户输入控制台的任何字符串中获取整数值。
不幸的是,这是一个非常常见的错误-没有任何东西可以阻止用户输入无法解析为int的字符串,如
'asdf'
int.Parse
方法在尝试解析此类字符串时会抛出异常。
您不应该使用
int.Parse
,而应该使用
int.TryParse
——如果字符串不能被解析为int,这将简单地返回
false

我注意到的第二件事是变量太多了。例如,
count
变量是多余的,因为您已经知道确实存在
n
等级。
low
变量似乎也没有任何作用

接下来,
平均值
应该是
双精度
,而不是
整数
,以处理非常常见的情况,即分数之和除以分数不是整数。 请注意,这并不意味着
classgrade
变量也必须是
double
,否则
classgrade/n
是整数除法,这意味着在这种情况下,您将得到一个四舍五入的数字作为平均数

您的输入也没有任何范围验证-没有任何东西可以阻止用户输入负数作为分数(甚至分数)。
通常,分数是介于0和100之间的数字-因此您可能需要添加这些验证。(提示-使用不同的方法从用户处获取输入-包括验证并允许用户在无效时重新输入值的方法)

最后,在
0
处开始
最低的
——因此,除非其中一个等级为负值,否则
最低的
将始终保持
0
。它的起点应该是可能的最高值(因此
100
int.MaxValue

话虽如此,我不会发布您需要进行的代码更正,因为如果我这样做,您将从中一无所获。
学习如何做某件事的唯一方法就是实际做某件事——所以我将把代码编写留给您去做


祝你好运,编程愉快

您的代码中有一些问题,我已经开始写评论,但是评论太长了,所以我将其转换为答案

我注意到的第一件事是,您正在使用
int.Parse
从用户输入控制台的任何字符串中获取整数值。
不幸的是,这是一个非常常见的错误-没有任何东西可以阻止用户输入无法解析为int的字符串,如
'asdf'
int.Parse
方法在尝试解析此类字符串时会抛出异常。
您不应该使用
int.Parse
,而应该使用
int.TryParse
——如果字符串不能被解析为int,这将简单地返回
false

我注意到的第二件事是变量太多了。例如,
count
变量是多余的,因为您已经知道确实存在
n
等级。
low
变量似乎也没有任何作用

接下来,
平均值
应该是
双精度
,而不是
整数
,以处理非常常见的情况,即分数之和除以分数不是整数。 请注意,这并不意味着
classgrade
变量也必须是
double
,否则
classgrade/n
是整数除法,这意味着在这种情况下,您将得到一个四舍五入的数字作为平均数

您的输入也没有任何范围验证-没有任何东西可以阻止用户输入负数作为分数(甚至分数)。
通常,分数是介于0和100之间的数字-因此您可能需要添加这些验证。(提示-使用不同的方法从用户处获取输入-包括验证并允许用户在无效时重新输入值的方法)

最后,在
0
处开始
最低的
——因此,除非其中一个等级为负值,否则
最低的
将始终保持
0
。它的起点应该是可能的最高值(因此
100
int.MaxValue

话虽如此,我不会发布您需要进行的代码更正,因为如果我这样做,您将从中一无所获。
学习如何做某件事的唯一方法就是实际做某件事——所以我将把代码编写留给您去做


祝你好运,编程愉快

只需删除Else并更改比较运算符(变量low无效)

if(
if (grade > highest)
    highest = grade;

if (count == 1)//to assign lowest at the first increment
    lowest = grade;

if (grade < lowest)
    lowest = grade;