2016-06-29 48 views
1

考慮這一點,如果userChoice不是整數:爲什麼不能簡單地檢查一個變量是否爲空而不是檢查不同的異常?

Scanner choice = new Scanner(System.in); 
int userChoice = choice.nextInt(); 
if(....){ 
    .... //not important 
} 
else if(userChoice == null){ 
    System.out.println("wrong input.."); 
    System.exit(0); 
} 

我這樣做爲什麼不能?而是必須做的:

import java.util.InputMismatchException; 

..... //bunch of code 

Scanner choice = new Scanner(System.in); 
    int userChoice; 
    try { 
     userChoise = choice.nextInt(); 
     if(...){ 
      ..... //not important 
     } 
    } 
    catch(InputMismatchException e) { 
     System.out.println("wrong input.."); 
     System.exit(0); 
    } 

我認爲這是這樣,如果我inputed,比如說,一個char時,預期的int它只會返回null。所以如果我檢查了null,那就足夠了。那麼我錯過了什麼/沒有了解?

所以這不是關於掃描儀庫的問題。如果你想把它煮沸,那就是我不知道一個整數不可能是null。所以認爲這是重複的用戶,可能是這樣。但它肯定不是您建議的帖子的重複內容。

+2

'int'永遠不能爲null。決不! – Hackerdarshi

+0

掃描器類在輸入不匹配時拋出異常,而不是'int',而'int'不能爲 – Sanjeev

+0

這可能很有用:http://stackoverflow.com/q/970029/423955 Java基元類型不能爲空。只有對象的引用可以爲null。 –

回答

4

int不能爲空。它可以是其範圍內的任何數字。

+2

請更精確一點:'int'不能爲空;一個「整數」可以;在Java中,'integer'不是一件事情。 –

+0

我說整數不是'整數',而整數是整數。 – Shiro

+0

@AndyTurner我認爲'int'是'integer'的簡稱? –

0

除了這個事實,如果你想返回null,你需要使用Integer而不是int,這是不可取的。主要原因是檢查輸出爲null很容易被遺忘,並且可能會在程序後期導致錯誤情況。

但是,必須抓住一個例外,否則它會爬上堆棧。例外情況可以更容易地找出發生錯誤的位置(如果他們有適當的內容,他們也會說出發生的原因)。

相關問題