在Java中将整数添加到数组中

时间:2016-10-04 19:18:18

标签: java arrays if-statement for-loop arraylist

我必须创建一个接受用户数字输入的程序,然后将它们添加到ArrayList中,然后以多种方式处理数据。数字必须大于或等于0.我有一个问题,将用户输入添加到ArrayList,我的try和catch语句停止程序崩溃,但我无法向ArrayList添加任何东西,有人可以告诉我是什么我在添加过程中做错了吗? 这是我的代码:

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.");
    }
}                   

3 个答案:

答案 0 :(得分:5)

这是因为您在调用valueInput之前将null的文字设置为valueInput.setText(null)Integer.parseInt(valueInput.getText())},这会抛出以下类型的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);

即可

答案 1 :(得分:0)

您只能解析表示数字的字符串。指向null的String变量绝对不代表数字。我建议用这种方式修改代码:

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

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

    //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");
        }

答案 2 :(得分:0)

在完成解析输入并将其保存到变量后,//清除outputArea!