내 프로그램은 사용자로부터 입력 데이터를 받아들이고 (최대 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) 내부 for 루프 숫자를 덮어 씁니다. [3] 나는 바깥 쪽 do while loop와 inner for loop가 문제를 해결할 필요가 있다고 생각하지 않습니다. – paisanco