2014-08-28 1 views
-2
public static void main (String[] args) { 
    double sum = 0; 
    int count = 0; 
    double userEnterNumber = 0; 
    double min = 0; 
    double max = 0; 
    double average = 0; 
    System.out.println(" Input a number, type a non-numerical value to exit: "); 
    Scanner in = new Scanner(System.in); 
    userEnterNumber = in.nextDouble(); 

    while (in.hasNextDouble()) 
    { 
     userEnterNumber = in.nextDouble(); 
     if (userEnterNumber>0) { 
      sum = sum + userEnterNumber; 
      count ++; 
      average = sum/count; 
      if (userEnterNumber >=max){ 
       max = userEnterNumber; 
      } 
     } 
    } 
    System.out.println(" Sum: "+sum); 
    System.out.println(" Count: "+count); 
    System.out.println(" Average: "+average); 
    System.out.println(" Minimun: "+min); 
    System.out.println(" Maximum: "+max); 
} 

내 프로그램에서 무슨 일이 일어나는지 파악하려고합니다. 내가 그것을 실행할 때마다, 그것은 틀린 합계와 틀린 계산을 나에게 준다. 어떻게 해결할 수 있습니까? 여기에 최소값도 어떻게 추가 할 수 있습니까? 감사합니다어떤 이유로 컴파일하고 프로그램을 실행하려고하면 합계가 올바르게 추가되지 않습니다.

+1

초기 값을 건너 뜁니다. 먼저 in.nextDouble()을 얻은 다음 while (in.hasNextDouble())을 호출하면 in.nextDouble()을 다시 얻습니다. 따라서 첫 번째 값은 합계의 일부로 기록되지 않습니다. –

+3

루프에서 즉시 다시 호출하기 때문에 첫 번째'in.nextDouble()'을 버리고 있습니다. – Doorknob

답변

2

프로그램을 통해 읽으십시오. 두 번째 전화는userEnterNumber = in.nextDouble(); 입니다. 첫 번째 통계 계산이 수행됩니다.

사실상, 입력 한 첫 번째 Double은 건너 뜁니다. 출력 번호는 이제 이해가됩니까?

나중에 디버거에서 프로그램을 실행하고 각 단계에서 각 변수가 올바른/예상 값을 보유하는지 확인하십시오.

+0

감사합니다. 첫 번째 in.nextDouble()을 삭제했습니다. 그리고 잘 작동합니다. –

관련 문제