如何通过排序方法组织字符串?

时间:2013-06-11 00:18:21

标签: java arrays sorting

这是一个允许用户输入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'是我上次测试程序时输入的最后一个字母...整整五秒钟。

任何提示或建议将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用Collections.sort轻松完成此操作。查看String的默认compareTo方法是否适合您。如果确实如此,它就会那样排序。就这样做:

List<String> alphabet = new ArrayList<String>();
//populate with Strings
Collections.sort(alphabet);

然后你的字母表将被改变为abc顺序。

至于你的实际错误,我无法弄清楚该行在哪里发生(如果你告诉我们堆栈跟踪指向哪里,我可以)。但看起来你有一些代码试图将String转换为Number,但String不代表数字。具体来说,你试图将“d”变成一个数字。

答案 1 :(得分:0)

您的代码中某处似乎正在尝试将String解析为数字,而当您的String包含字母时,该方法会抛出异常。在代码中搜索一些parseInt()或类似的内容。