2

我需要编写一个应用程序,它可以将 10 000 个用户输入的值存储在一个数组中,并且可以返回所有值的总和和所有值的平均值。如果用户写入数字“0”,则必须停止输入。有一些条件需要满足:

  1. 这些值需要存储在数组中
  2. 用户输入数据必须在while循环内
  3. 分析(可以说是数学)必须在用户输入完成后进行。
  4. 不允许应用程序循环任何空元素。

这是我今天在课堂上得到的额外作业。

到目前为止,我已经写了这个:

import java.util.Scanner;

    public class Ovning_54 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int[] list;
            list = new int[10000];
            int sum = 0;
            int avr = 0;
            int x = 0;
            int number;

            System.out.print("Add number " + (x + 1) + ": ");
            number = input.nextInt();

            while (x <= list.length && (number != 0 || x == 0)) {
                 list[x] = number;
                 x++;
                 System.out.print("Add number " + (x + 1) + ": ");
                 number = input.nextInt();
            }

            for (int i = 0; i < x; i++) {
                 sum += list[i];
                 avr = sum / x;
            }

            System.out.println("The sum of all values are: " + sum);
            System.out.println("The average value of the numbers are: " + avr);
          }

    }    

我想我已经解决了!似乎运行正常,我没有收到任何错误消息。我仍然想知道这是否违反条件#1。如果没有,有没有办法解决它?

4

2 回答 2

2

改变

x = list.length;break;

这将保留您的 x,即他们输入的条目数。或者,您可以将另一个变量设置为 x,然后将 x 设置为 list.length。我知道有些老师告诉学生不要使用break(我仍然不明白)

然后你的 for 循环变成:

for(int i = 0 ; i < x ; i++)

然后在 for 循环之后,你的平均值是 sum/x。

编辑:再看一遍后,当你去计算平均值时,看起来好像 x 可能太大了。您可以通过在计算中使用 (x-1) 来解决此问题(不太自然),或者将中断条件放在 while 循环中 x 的增量之前(更自然)。

于 2013-10-22T15:20:54.330 回答
1

用这个替换你 while (x <= list.length)的。

while (x <= list.length && (number != 0 || x==0))

替换你的 for 循环

for(int i = 0; i < list.length; i++){
    sum += list[i];
}

有了这个。

for(int i = 0; i < x; i++){
    sum += list[i];
}

现在您修改后的代码如下所示

    public static void main (String[] args){
            Scanner input = new Scanner(System.in);
            int[] list;
            list = new int[10000];
            int sum = 0;
            int avr = 0;
            int x = 0;
            int number;

            while (x <= list.length && (number != 0 || x==0)){
                 System.out.print("Add number " + (x+1) + ": ");
                 number = input.nextInt();
                 list[x] = number;
                 x++;                     
            }

            for(int i = 0; i < x; i++){
                 sum += list[i];
            }

          }
于 2013-10-22T15:30:09.587 回答