2014-10-01 29 views
1

我正在做一個簡單的猜謎遊戲,從用戶那裏獲取輸入。輸入必須是一個小於6的數字來猜測隨機數。我已經處理的情況下,如果用戶鍵入一個較大的值:如何處理numberformatexception?

if(num > 5) { 
System.out.println("The number is too high. You spoiled one turn. Your saldo is now  "  + cash +"."); 
guessAgain(); 
} 

但一個事實,即用戶鍵入的東西是不是一個數字,我想我可以使用此代碼處理:

if(num != 1 && num != 2 && num != 3 && num != 4 && num != 5) { 
System.out.println("Invalid input"); 
guessAgain(); 
} 

但是這不起作用,並給我輸入字符串的numberformatexception。你能幫我解決嗎?在此先感謝

這之前它的代碼:

System.out.print("Guess : "); 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String gok = null; 

try { 
    gok = br.readLine(); 
    } catch (IOException ioe) { 
    System.out.println("IO error"); 
    System.exit(1); 
    } 




int num = Integer.parseInt(gok); 

回答

0

如果你使用一個嘗試捕捉您可以使用該異常來確定,如果不是它是如何在數量(在嘗試。你可以把一個轉換爲一個int)。而且大部分的時間有將與它將會是如果不是它是如何在數轉換異常

編輯:

嘗試
{
Integer.valueOf([here your input]);
}
趕上(NumberFormatException的E)
{
的System.out.println( 「您輸入不是一個號碼」);
}

+0

請我,我是個初學者承受,你可以展示如何代碼應該看起來像? – user3660293 2014-10-01 12:39:04

+0

我按照你的要求添加了一個代碼示例。 – Dave 2014-10-01 12:45:44

+0

這是否解決了你的問題? – Dave 2014-10-03 12:01:20

0

變換NUM爲整數,趕上這樣的NumberFormatException的(我只是把你的代碼,並添加醒目NFE):

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String num = null; 
     try 
     { 
      num = br.readLine(); 
      Integer.valueOf(num); 
     } catch (IOException ioe) 
     { 
      System.out.println("IO error"); 
      System.exit(1); 
     } catch (NumberFormatException nfe) 
     { 
      System.out.println("Invalid input"); 
     } 
     System.out.println(num); 
+0

謝謝你的回覆。我在我的代碼中添加了這個,並且我仍然遇到了錯誤。我在它之前添加了代碼,因爲它可能會清除它。 – user3660293 2014-10-01 12:42:20