这是一个允许用户输入6个随机字母的程序,程序按顺序对这些字母进行排序。 Ex用户输入j,d,e,l,w,q和程序输出d,e,j,l,q,w。
不幸的是,代码吓坏了,并没有排序。注意:我正在使用GUI
在公开场合,我创建了一个类和一个数组,最终容纳所有输入的字母
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
用户在textField中输入字母后,按下“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'是我上次测试程序时输入的最后一个字母...整整五秒钟。
任何提示或建议将不胜感激!
答案 0 :(得分:1)
当您尝试将某些文本解析为数字时会抛出NumberFormatException
,但文本不是数字,例如在您的示例中:"d"
。
您提到您使用此代码处理整数,然后将其转换为使用字母。很可能,您忘记取出将输入解析为数字的代码(此处未显示)。您应该取出该代码并接受用户输入为原始输入的文本。
答案 1 :(得分:0)
您可能正在代码中使用parseInt()或类似内容,您可以从中获得用户输入。该方法现在应该关闭,因为您不再希望将输入从String更改为任何数字。 顺便说一句,仅仅为了获取信息,java中的类Arrays包含一些排序方法。您可以在此site
查看这些内容