0

これは、ユーザーが 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

ユーザーが 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' は、最後にプログラムをテストしたときに入力した最後の文字です...すべて 5 秒前です。

ヒントやアドバイスをいただければ幸いです。

4

2 に答える 2

0

おそらく、ユーザーからの入力を取得するコードの一部で parseInt() または同様のものを使用しています。入力を文字列から任意の数値に変更する必要がなくなったため、このメソッドはオフにする必要があります。ところで、参考までに、java のクラス Arrays には、いくつかの並べ替えメソッドが含まれています。こちらのサイトで確認できます

于 2013-06-10T23:04:58.193 に答える