【问题标题】:How to organize strings through a sort method如何通过排序方法组织字符串
【发布时间】: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 ..

标签: java arrays sorting


【解决方案1】:

当您尝试将某些文本解析为数字时会抛出 NumberFormatException,但该文本不是数字,例如在您的示例中:"d"

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

【讨论】:

  • 我已经仔细检查了我的代码,但没有找到任何东西。虽然我确实错过了这个问题中的一行代码,但我在它旁边添加并评论了它。我现在意识到我创建的用于存储信息的类/数组和我忘记的随机数组之间存在一些“断开”......恰好是代码排序部分中的数组。那么,我应该如何解决这种断开连接?
  • 异常应该带有一个跟踪,其中包含引发异常的行号。该行号会告诉您代码哪里出错了。
  • 作为一个自学的java初学者......和一般的编码我不太理解你最近关于告诉我我做错了什么行的回答,考虑到我的行中没有一行整个程序都带有红色下划线(通常,如果我将鼠标悬停在该行上,会弹出解释为什么它不工作)再次要求您重新阅读我的代码以仔细检查它是否不礼貌?在过去的 1 小时 3 分钟里,我一直在读我的眼睛,但没有找到任何地方。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2023-03-06
    • 2017-09-07
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多