1. ホーム
  2. java

[解決済み] 不特定多数の整数を読み込み、pos, neg, total, averageを求めるプログラムを作成せよ。

2022-01-28 16:11:22

質問

(正負の数を数え、数の平均を計算する)Write 不特定多数の整数を読み込んで、その数が何個か判断するプログラム。 正と負の値を読み取り、その合計と平均を計算する。 入力された値(0は数えない)。プログラムは入力 0 で終了する. 平均値を浮動小数点数で表示します。以下は実行例です。

整数を入力し、0 であれば入力終了: 1 2 -1 3 0

陽性の数は3

ネガポジの数は1

合計は5.0

平均値は1.25

2つの大きな問題があります。1) ループを停止させることができません。2) ループを停止させたとしても、平均値が不足する。上記の例では、私の平均は常に1.0であり、1.25であるべきではありません。これは、プログラムが5と等しい4つの数値ではなく、合計5つの数値を読み取っているようなものです。 以下のコードに見られるものが、私の使える全てです。javaの基本中の基本ですが...

import java.util.Scanner;

public class NewClass {
 public static void main(String[] args) {
 Scanner input = new Scanner(System.in);

     int positive = 0, negative = 0, total = 0, count = 0;

     float average;

     System.out.println("Enter the number: ");
     int number = input.nextInt();

     while(number != 0) {
        total += number;
        count++;

        if(number > 0){
        positive++;
        }

        else if(number < 0){
        negative++;
        }

     average = total / count;

     System.out.println("The number of positives is "+ positive);
     System.out.println("The number of negatives is "+ negative);
     System.out.println("The total is "+ total);
     System.out.println("The average is "+ average);
     }
   }
}

解決方法は?

より多くの数値を読み取る必要があります。ループの前に1つの値を読み取る。次のようなことができます。

int number;
while((number = input.nextInt()) != 0) {
    total += number;
    count++;
    if(number > 0){
        positive++;
    } else if(number < 0) {
        negative++;
    }
} // <-- end loop body.
float average = total / (float) count; // <-- not integer math.
System.out.println("The number of positives is " + positive);
System.out.println("The number of negatives is " + negative);
System.out.println("The total is " + total);
System.out.println("The average is " + average);