2014-01-16 7 views
0

숫자가 아닌 값을 입력 할 때까지 숫자를 입력하라는 메시지를 표시하는 프로그램을 만들려고합니다. 이 시점에서 끝나고 인쇄됩니다 : 개수, 합계, 평균, 최소 및 최대. 나는 "int는 dereferenced 될 수 없다"라는 오류가 발생합니다. 나는 무엇을해야하는지 혼란 스럽다. 다음 입력이없는 경우 INT이 코드를 숫자가 아닌 부분에서 멈추게하려면 어떻게해야합니까?

import java.util.Scanner; 
public class Program3 
{ 
    public static void main(String[] args) 
{ 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter an floating point number"); 
     int count = 1; 
     int sum = 0; 
     int min = 100000; 
     int max = 1; 
     int check=0; 
     while(check==0) 
     { 
      int number = input.nextInt(); 
      if(number.hasNextInt()) 
      { 
       count++; 
       sum=sum+number; 
       while(number<min) 
       min = number; 

       while(input>max) 
       max = number; 
      }  
      else 
      { 
       check=1; 
      } 
     } 
     System.out.println("The count is " +count); 
     System.out.println("The sum is " +sum); 
     System.out.println("The average is " +sum/count); 
     System.out.println("The minimum is " +min); 
     System.out.println("The maximum is " +max); 
     System.exit(0);  
    } 
} 
+0

또한 마지막 번호는 계산하지 않습니다. 나는 그것에 대해서도 혼란 스럽다. – user3200964

+2

프리미티브'int'는 Object가 아닙니다. 'hasNextInt()'메소드는 존재하지 않습니다. 아마도'input.hasNextInt()'를 의미했을 것입니다. –

답변

3
int number = input.nextInt(); 

예외를 줄 것이다.

해결 방법이 문을 try catch 블록으로 묶고 catch 블록에서 non numeric을 emcountered 한 다음 원하는대로 수행하십시오. 두 문제에 대한

설명 : 다음, A는

(는) 4가 발생,이 number = 4을 assignes 당신이

1

2

4

이 있다고 가정 다음 값이 있는지 검사합니다. 또한, 다음 입력이 'a', 그래서 당신의 last encountered int에 처리를 수행이 if 블록이 실행되지 않기 때문에, false입니다

if(number.hasNextInt())을 int이며.

단, while는 여전히 다음 반복으로 이동되며, 다음 입력를 벗어난 int을 얻으려고 것 즉, a 따라서는 예외를

PS를 제공합니다 또한 난 당신이 쓰기위한 생각 input.hasNextInt() 대신 number.hasNextInt()

+0

시도해 보았습니다! 고맙습니다!! :디 – user3200964

2

나는 사용자로부터 문자열을 얻고 플로트로 분석하려고합니다. float (또는 double)로 파싱하는 동안 예외가 발생하면 숫자가 아닌 값이 도착했습니다.