【发布时间】:2013-06-11 07:05:23
【问题描述】:
这是一个让用户输入 6 个随机字母的程序,程序按顺序对这些字母进行排序。 Ex 用户输入 j、d、e、l、w、q 和程序输出 d、e、j、l、q、w。
不幸的是,代码搞砸了,没有排序。注意:我使用的是 GUI
在 public 下我创建了一个类和一个数组来最终容纳所有输入的字母
class Abc {
String letter;
Abc (String _letter) {
letter = _letter;
}
}
ArrayList <Abc> alphabet = new ArrayList <Abc>(3); //note its 3, not 6 like in the example
用户在文本字段中输入一个字母后,他们按下“addButton”,该按钮添加并保存数组中的值。
String letter = letterField.getText();
//Store values in array
Abc a = new Abc(letter);
alphabet.add(a);
现在是实际的“排序”部分。这发生在用户按下“播放”按钮后。
String[] abc = new String[3]; //LINE I FORGOT TO ADD
for (int k = 0; k < abc.length; k++) {
abc[k] = letterField.getText();
int x;
for (int i = 0; i < abc.length; i++) {
// Asume first value is x
x = i;
for (int j = i + 1; j < abc.length; j++) {
//find smallest value in array (random)
if (abc[j].compareToIgnoreCase(abc[x]) < 0) {
x = j;
}
}
if (x != i) {
//swap the values if not in correct order
final String temp = abc[i];
abc[i] = abc[x];
abc[x] = temp;
}
textArea.append(abc[i] + "\n");// Output correct order
}
}
我最初使用此代码对整数进行排序,该程序与此程序之间的唯一区别是 int/String,而我目前正在处理的这个程序允许用户输入字母,并且程序不会像这样随机化它们它与整数程序有关。
我原以为这样的代码足以完成这个技巧并组织一些字母,但显然不是。
对于实际的问题,当我输入字母并将它们添加到数组中并按“播放”时,程序会出错并弹出一个可爱的错误...
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "d"
注意:“d”是我最后一次测试程序时输入的最后一个字母……都是五秒钟前。
任何提示或建议将不胜感激!
【问题讨论】:
-
提示:谷歌
NumberFormatException。并检查行号。 -
你的错误不在你显示的代码中,你正在做一个 for 循环设置总是相同的值
abc[k] = letterField.getText();除了如果你用空值声明你的数组,它会抛出一个 nullPointerException ..