2016-03-06 55 views
0

我是一個學生寫這個程序,是假設將Tsubo轉換爲(ft²)。我對這個源代碼沒有任何問題,但是我擔心我可能會在測試時遇到的問題丟失點數。問題是,當輸入一個整數時,如果我輸入一個字母或符號,那麼我得到一個錯誤,使程序完全停止。這是我的方法:錯誤當輸入字母和符號,而不是INT請求

public static void tsubo(){ 
    Scanner keyboard = new Scanner(System.in); 
    int tsubo; 
    double product; 
    System.out.println("\nPlease enter Tsubo to convert to (ft²): "); 
    tsubo = keyboard.nextInt(); 
    product = tsubo * 35.58; 
    System.out.println("Your conversion equals\n" + product + "(ft²)" + "\n"); 
} 

如何在輸入字母或符號時要求輸入整數來阻止發生此錯誤?

回答

-1

int變量tsubo尚未初始化。局部變量不會在Java中自動初始化。

+0

該變量在使用之前被初始化。這是好的(並建議)。 – Seelenvirtuose

0

通過運行您寫的代碼,當用字母或符號調用時,調用tsubo = keyboard.nextInt();會拋出java.util.InputMismatchException

javadoc

由Scanner拋出,表明檢索到的令牌不期望類型匹配的模式,或者該標記超出範圍的預期的類型。

在你的情況,你需要做的是包裝在一個try-catch塊行,結束程序,以便它不會嘗試計算什麼:

try { 
    tsubo = keyboard.nextInt(); 
} catch(InputMismatchException e) { 
    System.out.println("Please input a number, not a letter or symbol."); 
    return; 
} 

,其在輸入一個符號或字母,將會打印:

Please input a number, not a letter or symbol. 
+0

我感謝您的意見,它可以幫助我理解。 – MegamiahX

相關問題