我正在使用当前代码获取数字格式异常。我不确定究竟是什么问题,但我觉得这是一个非常小的问题,所以我不会详细说明我的代码是“假设要做什么”,但你可能会告诉我。 / 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()) {
}
}
答案 0 :(得分:0)
错误发生在这里:
int array[] = {Integer.parseInt(list.toString())};
这是因为您将列表转换为字符串然后尝试解析它。作为字符串的列表无法解析为int。如果您想了解原因,请尝试打印list.toString()
。
如果要将列表转换为数组,请改为:
Integer[] array = list.toArray(new Integer[0]);
答案 1 :(得分:0)
您可以尝试Apache Commons Lang将List<Integer>
转换为int[]
如下:
int array[] = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));