Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过排序方法组织字符串_Java_Arrays_Sorting - Fatal编程技术网

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

Java 如何通过排序方法组织字符串,java,arrays,sorting,Java,Arrays,Sorting,这是一个允许用户输入6个随机字母的程序,该程序按顺序对这些字母进行排序。前用户输入j、d、e、l、w、q和程序输出d、e、j、l、q、w 不幸的是,代码异常,无法排序。注意:我使用的是GUI 在public下,我创建了一个类和一个数组,以最终容纳所有输入的字母 class Abc { String letter; Abc (String _letter) { letter = _letter; } } Ar

这是一个允许用户输入6个随机字母的程序,该程序按顺序对这些字母进行排序。前用户输入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
现在是实际的“排序”部分。这发生在用户按下“播放”按钮之后

注:“d”是我最后一次测试程序时输入的最后一个字母……都是五秒钟前输入的


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

当您试图将某些文本解析为数字,但该文本不是数字时,会引发
NumberFormatException
,例如在您的示例中:
“d”


您提到您让这段代码处理整数,然后将其转换为处理字母。最有可能的情况是,您忘记取出将输入解析为数字的代码(此处未显示)。您应该取出该代码,并将用户的输入作为原始输入的文本接受。

您可能在代码部分使用了parseInt()或类似的东西,从用户那里获得输入。该方法现在应该关闭,因为您不再希望将输入从字符串更改为任何数字。
顺便说一句,仅供参考,java中的类数组包括一些排序方法。你可以在这里检查这些

提示:Google
NumberFormatException
。并检查行号。您的错误不在显示的代码中,并且您正在执行for循环设置,该设置的值始终相同
abc[k]=letterField.getText()此外,如果你用空值声明你的数组,它会抛出一个nullPointerException..我已经仔细检查了我的代码,但是没有找到任何东西。虽然我在这个问题中遗漏了一行代码,我在旁边添加并注释了它。我现在意识到,在我创建用来存储信息的类/数组和我忘记的随机数组之间存在某种“断开连接”…这恰好是代码排序部分的数组。那么,我应该如何修复断开连接呢?异常应该带有一个跟踪,其中包含引发异常的行号。这个行号会告诉你你的代码哪里出错了。作为一个自学java的初学者…一般来说,我不太理解你最近关于告诉我我做错了什么的行的回答,因为我整个程序中没有一行是红色下划线的(通常情况下,如果我将鼠标悬停在这条线上,会弹出一个解释它为什么不工作的窗口)再次要求您重新阅读我的代码以自己检查代码是不礼貌的吗?过去1小时3分钟,我一直在读我的眼睛,没有找到任何地方。
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
            }
        }
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "d"