2

有人可以帮帮我吗。我很难修复我的代码逻辑。这个程序应该计算用户输入的数字的平均值,假设数组的大小设置为 100,如果用户输入 -99,程序将被终止我知道问题出在 while 循环处理中

    Scanner input = new Scanner(System.in);

    int[] num = new int[100];

    int ctr=0, sum=0, ave = 0;

    while(num[ctr]!= -99)
    {
        System.out.print("Enter number: ");
        num[ctr]= input.nextInt();

        sum += num[ctr];

        ctr++;

    }

    System.out.print("Numbers are " );

    for(int x = 0; x<ctr; x++)
    {
        System.out.print(num[x] + " ");
    }

    ave = sum / (ctr-1);
    System.out.println("Average is " + ave);

    }

}
4

3 回答 3

0

当数组被填充时,您的 while 循环没有终止条件。(当输入了 100 个整数,并且 ctr 等于 100。)

于 2012-12-02T07:27:59.310 回答
0

循环的问题while在于它从不查看刚刚输入的元素。它总是查看紧随其后的元素。

于 2012-12-02T07:31:51.653 回答
0

您应该在 while循环之外读取第一个输入。while因为当用户输入时-99,在循环内你会增加ctr,所以检查将在错误的数字上。所以实际上你永远不会检查你想要检查的当前号码。

int ctr=0, sum=0, ave = 0;
System.out.print("Enter number: ");
num[ctr]= input.nextInt();
while(num[ctr]!= -99)
{
   sum += num[ctr];
   ctr++;
   System.out.print("Enter number: ");
   num[ctr]= input.nextInt();
}

但是你需要处理用户只输入一个数字的情况,在这种情况下你被零除,你得到的平均值是错误的。你还应该这样做:

ave = sum / (ctr);

代替:

ave = sum / (ctr-1);

现在你会得到很好的结果。

于 2012-12-02T07:33:43.437 回答