1

そのため、ArrayList の並べ替えに問題があります。私は挿入メソッドで使用する必要があるので、それに基づいてこのコードを書いています。これが意図していることは、ユーザーが 4 つの 3 文字の単語を入力する必要があり、それらが ArrayList でアルファベット順にソートされることです。私はさまざまなことを試してきましたが、コードを実行すると最初の単語がソートされますが、それが繰り返されます。出力は、私が入れる言葉に本当に依存します。私の問題はwhileループにあるように感じますが、さまざまな方法を試していますが、同じ問題を抱えています. どんな助けでも大歓迎です。

import java.util.ArrayList;
import TerminalIO.KeyboardReader;

public class Insert{
    public static void main(String[] args) {
        int i,j;
        String tmp;
        ArrayList<String> words = new ArrayList<String>();
        int run = 4;
        KeyboardReader reader = new KeyboardReader();
        while(run!=0) {
            words.add(reader.readLine("Enter a three letter word: "));
            run--;
        }


        for (j=1; j<words.size(); j++) {
            i = j - 1;
            tmp = words.get(j);

            while ( (i>=0) && (tmp.compareTo(words.get(i)) < 0)){
                words.set(i,tmp); 
                words.set(i+1,words.get(i));
                i--;
            }

       //words.set(i+1,tmp);

        }

        for(int r = 0; r<words.size(); r++)
            System.out.print(words.get(r) + " ");

    }
}
4

4 に答える 4

0

この特定の方法で行う必要がある場合は、2 番目の while ループで文字列変数を使用する必要があります。これを tmp2 と呼びましょう。

   while ( (i>=0) && (tmp.compareTo(words.get(i)) < 0)){
   tmp2 = words.get(i);
        words.set(i,tmp); 
        words.set(i+1,tmp2);
       i--;
    }
于 2013-05-11T22:55:04.103 に答える
0

Collections.sort自分でソートする代わりに使用してみませんか。while ループの後は次のようになります。

 while(run!=0){
   words.add(reader.readLine("Enter a three letter word: "));
   run--;
 }
 Collections.sort(words);
于 2013-05-11T22:09:25.933 に答える