Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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#_Loops_Average - Fatal编程技术网

在下面的C#程序中,我应该使用哪个循环来获得正确的结果

在下面的C#程序中,我应该使用哪个循环来获得正确的结果,c#,loops,average,C#,Loops,Average,在下面的程序中,我知道发生了什么,但不知道应该使用哪个循环。这是密码。谢谢你的帮助 如果您需要更多信息来理解我的问题,请告诉我 using System; // Write a C# program that takes x numbers as input to calculate and print the average. class Program9 { int input, i = 1, val, sum; decimal avg; public voi

在下面的程序中,我知道发生了什么,但不知道应该使用哪个循环。这是密码。谢谢你的帮助

如果您需要更多信息来理解我的问题,请告诉我

using System;

// Write a C# program that takes x numbers as input to calculate and print the average. 
class Program9
{
    int input, i = 1, val, sum;

    decimal avg;

    public void program9M()
    {
        Console.Write("How many number(s) you have for an average: ");
        input = Convert.ToInt32(Console.ReadLine());

        if (input >= 2)
        {
            do
            {
                Console.Write("Enter number {0} for an average: ", i);
                val = Convert.ToInt32(Console.ReadLine());
                sum = sum + val;
                i += 1;
            } while (i <= input);

            avg = (decimal)sum / i;
            Console.WriteLine("The average of above {0} number is: {1}", i, avg);
        }
        else
        {
            Console.WriteLine("\n\nSorry you can't find average for one number, at least 2 number required\n\n");
        }

        Console.Write("Press any key to continue further...");
        Console.ReadKey();
    }

    public static void Main()
    {
        Program9 p9 = new Program9();
        p9.program9M();
    }
}
电流输出:

The average of above **4** number is: **7.5**
预期产出:

The average of above **3** number is: **10**

问题是
do
循环如何工作

更改
int输入,i=0,val,sum并将i增量移到顶部。另外,因为我们从0开始,所以比较i小于输入

class Program9

{

    int input, i = 0, val, sum;

    decimal avg;

    public void program9M()

    {

        Console.Write("How many number(s) you have for an average: ");
        input = Convert.ToInt32(Console.ReadLine());
        if (input >= 2)
        {
            do
            {
                i += 1;
                Console.Write("Enter number {0} for an average: ", i);
                val = Convert.ToInt32(Console.ReadLine());
                sum = sum + val;

            } while (i < input);
            avg = (decimal)sum / i;
            Console.WriteLine("The average of above {0} number is: {1}", i, avg);
        }

        else
        {
            Console.WriteLine("\n\nSorry you can't find average for one number, at least 2 number required\n\n");

        }
        Console.Write("Press any key to continue further...");
        Console.ReadKey();
    }

    public static void Main()

    {
        Program9 p9 = new Program9();
        p9.program9M();
    }

}
class程序9
{
int输入,i=0,val,和;
十进制平均值;
公众假期计划()
{
控制台。写下(“你平均有多少个号码:”;
输入=Convert.ToInt32(Console.ReadLine());
如果(输入>=2)
{
做
{
i+=1;
Write(“输入数字{0}作为平均值:”,i);
val=Convert.ToInt32(Console.ReadLine());
sum=sum+val;
}而(i

}

最好使用的循环是“for”循环,但使用它也可以工作。 这样做的错误是,在开始和结束时,“i”应该是0,而应该是“(i
int i = 0;
do
{
    Console.Write("Enter number {0} for an average: ", i);
    val = Convert.ToInt32(Console.ReadLine());
    sum = sum + val;
    i += 1;
} while (i < input);

avg = (decimal)sum / input;
Console.WriteLine("The average of above {0} number is: {1}", input, avg);
inti=0;
做
{
Write(“输入数字{0}作为平均值:”,i);
val=Convert.ToInt32(Console.ReadLine());
sum=sum+val;
i+=1;
}而(i
对于“for”循环,这种情况下更常见的用法是:

for (int i = 0; i < input; i++)
{
    Console.Write("Enter number {0} for an average: ", i);
    val = Convert.ToInt32(Console.ReadLine());
    sum = sum + val;
}

avg = (decimal)sum / input;
Console.WriteLine("The average of above {0} number is: {1}", input, avg);
for(int i=0;i

此外,没有必要除以“i”,因为“input”总是数字的数量。

您可以彻底清除该代码

int index = 0, input, averageInput;
var collection = new List<int>();
if(int.TryParse(Console.ReadLine(), out input) && input >= 2)
{
     while(index <= input)
     {
          if(int.TryParse(Console.ReadLine(), out averageInput)
             collection.Add(averageInput);

          index++;
     }

     var sum = collection.Sum();
     var average = collection.Average();
}
int index=0,输入,平均输入;
var collection=新列表();
if(int.TryParse(Console.ReadLine(),out输入)&&input>=2)
{

虽然(索引
i=0
而不是
1
?伙计,我们不是实时调试程序,请开始使用调试功能并检查您的问题所在。如果您有确切的问题,请询问。嘿,伙计,您是对的!!!非常感谢。您应该尝试添加断点并对其进行调试以了解更多信息,您可以查看顶部的文档部分以获取教程,您可以您将获得更多好处。请尝试添加一些详细信息。您可以添加的内容(假设您还没有)包括:您已经尝试过的内容,哪些已经/没有成功,少量代码或错误消息,以及可能帮助他人回答您问题的任何其他信息。请通过编辑原始问题并添加详细信息来完成此操作!谢谢!
int index = 0, input, averageInput;
var collection = new List<int>();
if(int.TryParse(Console.ReadLine(), out input) && input >= 2)
{
     while(index <= input)
     {
          if(int.TryParse(Console.ReadLine(), out averageInput)
             collection.Add(averageInput);

          index++;
     }

     var sum = collection.Sum();
     var average = collection.Average();
}