2014-01-16 85 views
0

我試圖做一個程序,提示用戶輸入數字,直到輸入一個非數字值。此時,它結束並打印:計數,總和,平均值,最小值和最大值。我得到一個「int不能被解除引用」的錯誤。我很困惑該怎麼做。如果下一個輸入不是一個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'不是一個對象。沒有'hasNextInt()'方法。你可能的意思是'input.hasNextInt()' –

回答

3
int number = input.nextInt(); 

會給出一個例外。

解決方法是在try catch塊中包含此語句,並在catch塊中執行任何您想在執行non numeric後執行的操作。

說明兩個問題:假設你有

一個

當它遇到4,它assignes number = 4,然後檢查下一個值也詮釋,

if(number.hasNextInt()),這是false,因爲旁邊輸入'a',所以這if塊,這確實對你last encountered int處理,不運行。

但是,在while還是會去下一個迭代,並會設法弄一本int出下一個輸入,即a因此給出了一個例外

PS:還我相信你打算寫input.hasNextInt()而不是number.hasNextInt()

+0

試過並且工作過!謝謝!! :d – user3200964

2

我會嘗試從用戶獲取一個字符串,然後將其解析爲一個浮點數。如果我在將它解析爲float(或double)時遇到異常,則會有非數字值。