C#控制台应用程序-计算平均数

C#控制台应用程序-计算平均数,c#,console-application,C#,Console Application,我试图创建一个程序,该程序将给我5次测试的平均分数。首先,我创建了5个由用户声明的变量。但是我有一个我自己无法解决的问题。我的代码的输出显示了一个错误的测试平均分数,可能我在某个地方有一个错误,我希望你能帮助我找到它。 以下是完整的代码: using System; namespace Test { class MathTest { static void Main() { string a, b, c, d, e;

我试图创建一个程序,该程序将给我5次测试的平均分数。首先,我创建了5个由用户声明的变量。但是我有一个我自己无法解决的问题。我的代码的输出显示了一个错误的测试平均分数,可能我在某个地方有一个错误,我希望你能帮助我找到它。 以下是完整的代码:

using System;

namespace Test
{
    class MathTest
    {
        static void Main()  
        {
            string a, b, c, d, e;

            Console.WriteLine("1st Test Score: ");
            a = Console.ReadLine();
            Console.WriteLine("2nd Test Score: ");
            b = Console.ReadLine();
            Console.WriteLine("3rd Test Score: ");
            c = Console.ReadLine();
            Console.WriteLine("4th Test Score: ");
            d = Console.ReadLine();
            Console.WriteLine("5th Test Score: ");
            e = Console.ReadLine();

            Console.WriteLine("Your Average Test Score is: {0}", 
                               Convert.ToInt32(a + b + c + d + e) / 5);
        }
    }
}

希望最后一句话中只有一个错误,那就是公式。感谢您的关注。

您首先连接字符串,然后将结果转换为Int并除以5


先对每个数字进行强制转换,然后再对其进行数学运算。

您正在转换连接的字符串。假设用户输入: 1. 2. 3. 4. 5.
然后(a+b+c+d+e)是“12345”,您正在计算12345/5。您需要先分别转换所有字符串。

在求和之前必须先转换

Console.WriteLine("Your Average Test Score is: {0}", (Convert.ToInt32(a) + Convert.ToInt32(b) + Convert.ToInt32(c) + Convert.ToInt32(d) + Convert.ToInt32(e)/5)

您应该
将.ToInt32
转换为每个项目(
a
e
):


另一个(可能的)问题是整数除法:如果你想得到浮点结果(例如,平均分数
3.5
),你应该除以
5.0
,而不是
5

好吧,我在注释和答案中发现了我的错误,并修复了代码(只更改了中间部分)


正如其他人正确地说的那样,您需要首先将字符串转换为数字,然后将其相加,然后再将其除以

这解决了你的一些问题。然而,并不是所有的问题都结束了

下一步:如果有人输入75.5分怎么办?老师有时会给半分。整数不是正确的数据类型。在C#中,对于精确的十进制量,使用十进制;对于物理量,如长度或质量,使用double。您应该将所有字符串转换为十进制,而不是int

下一步:如果有人输入“Hello”或什么都没有,而不是数字,该怎么办?你的程序将崩溃。您需要使用诸如
TryParse
之类的方法来检测这种情况,然后需要相应地提示用户重新正确输入数字

现在,您不应该将所有代码重写五次创建一个方法,提示循环中的用户输入一个数字,并在用户成功输入时返回该数字。始终将问题分解为较小的问题,然后编写一个解决该问题的方法。这样,即使程序逻辑变得复杂,主例程也保持简单


最后也是最重要的一点:今天是学习如何使用调试器的好日子。学习如何自己发现这样的问题,而不是让陌生人在互联网上为你工作大多数计算机编程都是调试,所以现在就学习这项技能

您在这里添加字符串,这样“1”+“3”+“5”将变成“135”。
   ...
   Console.WriteLine("Your Average Test Score is: {0}", 
     (Convert.ToInt32(a) + 
      Convert.ToInt32(b) + 
      Convert.ToInt32(c) + 
      Convert.ToInt32(d) + 
      Convert.ToInt32(e)) / 5.0);
            int a, b, c, d, e;
        Console.WriteLine("1st Test Score: ");
        a = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("2nd Test Score: ");
        b = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("3rd Test Score: ");
        c = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("4th Test Score: ");
        d = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("5th Test Score: ");
        e = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Your Average Test Score is: {0}", Convert.ToInt32(a + b + c + d + e) / 5.0);