2017-04-02 115 views
0

TL; DR--如何讓java.util.NoSuchElementException返回null而不是錯誤並使程序崩潰。如何避免「java.util.NoSuchElementException」崩潰我的程序

我在寫一個應該從文本文件中讀取一系列整數的程序。在程序中,每次運行它時,整數的數量都會有所不同。我寫了一段代碼,它會讀取整數,我想知道如何使java.util.NoSuchElementException不會使我的程序崩潰,而是返回null。
我已經writen其代碼的情況下,你是好奇如下

public static void main(String[] args) throws IOException{ 
    Scanner Input = new Scanner(new File("newestcode.txt")); 
    Integer[] digits = new Integer[100]; 
    int h = 0; 
    while(true){ 
     digits[h] = Input.nextInt(); 
     h++; 
     System.out.println(digits[h]); 
    } 
} 

,程序我要寫作是一種對壞加密引擎解密引擎的我寫的一天

+1

你聽說過試穿嗎? –

+0

請按照字段的命名約定,使用camelCase。因爲你的字段'Input'可能看起來像一個類,使用靜態方法。 – StarCoder

回答

0
try { 
    digits[h] = Input.nextInt(); 
    h++; 
    System.out.println(digits[h]); 
}catch (NoSuchElementException e){ 
    break; 
} 
+0

如果你需要解釋它是如何工作的,只需要問:) – smolus

0

首先,如果您不確定文件中的整數大小,請不要嘗試將它們存儲到固定大小的數組中。改用ArrayList。

也不要使用無限循環while(true)但考慮使用Input.hasNext()來檢查是否還有東西要從文件中讀取。

還有一個。您正在嘗試在增量後打印值。這意味着你在0位置添加元素,但是試圖從1位置讀取它。在循環結尾進行增量。

Scanner Input = new Scanner(new File("newestcode.txt")); 
List<Integer> digits = new ArrayList<>(); 
int h = 0; 
while(Input.hasNetxt()){ 
    digits.add(h, Input.nextInt()); 
    System.out.println(digits.get(h)); 
    h++; 
} 
+0

小錯字,它是'Input.hasNext()'不是'Input.hasNetxt()' – StarCoder

0

您應該在使用input.hasNext()方法之前檢查輸入是否還有'int'。 爲了支持任何長度的int元素,您不能將數組設置爲100的固定長度,您需要使用ArrayList來動態添加元素。

Scanner input = new Scanner(new File("./newestcode.txt")); 
List<Integer> digits = new ArrayList<>(); 
int h = 0; 
while (input.hasNext()) { 
    digits.add(h, input.nextInt()); 
    System.out.println(digits.get(h)); 
    h++; 
} 

注意:您需要在增加h之前先打印數字[h]。

相關問題