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

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 に答える