2016-10-04 32 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!