2016-10-04 38 views
0

我必須創建一個程序,該程序接受用戶輸入的數字,然後將它們添加到ArrayList中,然後以多種方式處理數據。數字必須大於或等於0.我遇到了將用戶輸入添加到ArrayList的問題,我的try和catch語句會阻止程序崩潰,但我無法向ArrayList添加任何內容,有人能告訴我什麼我在添加過程中做錯了? 這裏是我的代碼:將整數添加到Java中的數組中

import java.util.ArrayList; 
import java.util.Collections; 

public class SumElements extends javax.swing.JFrame { 
ArrayList <Integer> values = new ArrayList(); 

...

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    try 
    { 

     //clear outputArea 
     outputArea.setText(null); 
     valueInput.setText(null); 
     outputLabel.setText(null); 

     //declare variables 
     int value = Integer.parseInt(valueInput.getText()); 

     //validate input 
     if (value >= 0){ 
      //add item to array 
      values.add(value); 

      //display values 
      Collections.sort(values); 
      for (int i = 0; i < values.size(); i++) 
      { 
       outputArea.setText(outputArea.getText() + values.get(i) + "\n"); 
      } 
     } 
    } 
    //set default 
    catch (NumberFormatException a) 
    { 
    outputLabel.setText("Please input a valid number."); 
    } 
}     
+2

您首先將'valueInput'的文本設置爲'null'然後閱讀它 - 您期望得到的結果是什麼? – UnholySheep

回答

5

這是因爲你的呼喚Integer.parseInt(valueInput.getText())之前的valueInput文本設置爲null(與valueInput.setText(null)),這將引發以下類型的NumberFormatException

Exception in thread "main" java.lang.NumberFormatException: null 
    at java.lang.Integer.parseInt(Integer.java:542) 
    at java.lang.Integer.parseInt(Integer.java:615) 

因此,只需刪除行valueInput.setText(null);

0

你只能解析那些代表數字的字符串。指向null的String變量絕對不代表數字。我建議以這種方式修改代碼:

​​
0

在完成解析輸入並將它們保存到變量中之後//清除outputArea!