私のプログラムは、ユーザーからの入力データを受け入れて(最大20の値)、平均を計算し、平均からの距離を求めます。数字がまだ追加されていないときにユーザーが "9999"を入力すると、エラーメッセージが表示され、値を再入力するようにユーザーに指示します。それ以外の場合は「9999」と入力すると、ユーザーが入力した内容が収集され、計算が行われます。私のプログラムは、ユーザーから20個の入力をすべて集めなければならず、値 "9999"が完全に入力されたときも無視しますが、他の計算は正しく行います。なぜ私のセンチネルの価値を認識していないのか分かりません。Javaプログラムはセンチネルの値を認識しません
package labpack;
import java.util.Scanner;
public class Lab4 {
public static void main(String[] args) {
int i = 0;
double [] numbers = new double[20];
double sum = 0;
int sentValue = 9999;
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("Enter the numbers you want up to 20");
do {
for (i = 0; i < numbers.length; i++) {
if (numbers[0] == sentValue){
System.out.println("Error: Please enter a number");
break;
}
else {
numbers[i] = input.nextDouble();
sum += numbers[i];
}
}
while (i<numbers.length && numbers[i]!=sentValue); //part of do-while loop
//calculate average and distance from average
double average = (sum/i);
System.out.println("This is your average:" + average);
for (i = 0; i < numbers.length; i++) { //Display for loop
double diffrence = (average-numbers[i]);
System.out.println("This is how far number " +numbers[i] +" is from the average:" + diffrence);
}
}
}
は、デバッガでそれを実行してみましたか? –
'main'から' return'がプログラムを終了します –
ここにいくつかの設計上の欠陥があります。1)forループ内のセンチネルのテストがないので、inner forループは20個すべての数値に対して実行されます。2)inner forループ数字を上書きする[0] 3)私は外側do whileループと内側forループの両方が問題を解決する必要があるとは思わない。 – paisanco