これが私の課題です:
非負の整数のリストを読み取り、最大の整数、最小の整数、およびすべての整数の平均を表示するプログラムを作成します。ユーザーは、最大値、最小値、および平均値の検索に使用されない負のセンチネル値を入力して、入力の終了を示します。平均は型の値である必要があるdouble
ため、小数部で計算されます。
さまざまな方法で動作するようにさまざまな部分を取得しました。方法Aは最大値と最小値を正しく、合計を間違っており、方法Bは合計と最大値を正しく、最小値を間違っています。次のコードは、方法 B を示しています。一部の変数はコメント アウトされています。
public class testthis2
{
public static void main(String[] args) {
System.out.println("Enter Numbers of Nonnegative Integers.");
System.out.println("When complete, enter -1 to end input values.");
Scanner keyboard = new Scanner(System.in);
//int max = keyboard.nextInt();
int max = 0;
int min = max; //The max and min so far are the first score.
//int next = keyboard.nextInt();
int count = 0;
int sum = 0;
boolean areMore = true;
boolean run_it = false; //run it if its true
//if (max <= -1) {
// System.out.println("Thanks for playing!");
// run_it = false;
//}
// else
// run_it = true;
while(areMore) //always true
{
int next = keyboard.nextInt();
//int max = 0;
// min = max;
if (next < 0) { //if -1 is entered end loop.
areMore = false;
run_it = false;
break;
}
else //run this badboy
if(next >= max)
max = next;
else if(next <= min)
min = next;
run_it = true;
sum += next;
count++;
}
if (run_it = true)
System.out.println("The highest score is " + max);
System.out.println("The lowest score is " + min);
System.out.println("count " + count);
System.out.println("sum " + sum);
System.out.println("average " + (double)(sum/count));
System.out.println("Thanks for playing!");
}
}
このテストを実行すると、最大値、合計、カウント、および平均がすべて正しくなります。ただし、明らかに 0 が入力されていないため、最小値が間違っています。テスト実行の例を次に示します。
When complete, enter -1 to end input values.
37
25
30
20
11
14
-1
The highest score is 37
The lowest score is 0
count 6
sum 137
average 22.0
Thanks for playing!
どんな助けでも大歓迎です。ありがとう!