有关java.lang.NumberFormatException的问题

时间:2016-04-26 03:19:09

标签: java arrays

我正在使用当前代码获取数字格式异常。我不确定究竟是什么问题,但我觉得这是一个非常小的问题,所以我不会详细说明我的代码是“假设要做什么”,但你可能会告诉我。 / p>

为了简短起见,下面的代码旨在使用带有一堆随机数的选择排序。我相信格式问题可能与错误信息中包含整数的[]有关但我真的不知道。错误消息返回到按钮下面的行,该行指出:             int array [] = {Integer.parseInt(list.toString())}; 这是有道理的,因为这是声明,但我不知道如何防止此问题持续存在。

感谢您提出任何意见,我为任何明显的错误道歉,我是新手。

到目前为止,这是我当前代码的主体:

ArrayList<Integer> list = new ArrayList<Integer>();

public static void selectionSort(int[] a) {
    for(int i = 0; i < a.length; i++) {
        int smallestValue = a[i];
        int smallestIndex = i;
        for(int j = i+1; j < a.length; j++) {
            if (smallestValue > a[j]) {
                smallestValue = a[j];
                smallestIndex = j;
            }
        }
        a[smallestIndex] = a[i];
        a[i] = smallestValue;
}
}

public void start() {
    int times = Integer.parseInt(n2sInput.getText());
    for (int i = 0; i < times; i++) {
        list.add(new Random().nextInt(2000) - 1000);
    }
}

public static String arrayToString(int[] a) {
    String result = "";
    for (int v : a) {
        result += v + " ";
    }
    return result;
}

private void sortButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           

    if(selButton.isSelected()) {
        start();
        int array[] = {Integer.parseInt(list.toString())};
        onOutput.setText(arrayToString(array));
        selectionSort(array);
        snOutput.setText(arrayToString(array));
    } else if(bubButton.isSelected()) {

    } else if(insButton.isSelected()) {

    } else if(quiButton.isSelected()) {

    }
} 

2 个答案:

答案 0 :(得分:0)

错误发生在这里:

int array[] = {Integer.parseInt(list.toString())};

这是因为您将列表转换为字符串然后尝试解析它。作为字符串的列表无法解析为int。如果您想了解原因,请尝试打印list.toString()

如果要将列表转换为数组,请改为:

Integer[] array = list.toArray(new Integer[0]);

答案 1 :(得分:0)

您可以尝试Apache Commons LangList<Integer>转换为int[] 如下:

int array[] = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));