0

私の課題では、整数をソートするメソッドと、オブジェクト クラスに格納された文字列の両方を作成する必要があります。覚えておいてください、キャストを使用する必要がありました。私はジェネリックを使用したかったのですが、私の先生は 1.4.2 (ジェネリックを持っていません) を使用することを主張しています。時刻を並べ替えることができます。アルファベット順の並べ替えでは、メソッドを使用して時刻を並べ替え、compareTo を追加しました。少しいじってみましたが、出力すると、入力した順番で入力したものがすべて表示されます。アルファベット順ではありません。

入力を保存するために作成したクラスは次のとおりです。

public class showInfo 
{
    String name;
    String day; 
    int time;    
}

以下は名前順のソート方法です!

//method to sort and display info
public static void sortName(){          
    for(int i = 0; i < show.size() - 1; i++) {
        for(int j = 0; j < show.size() - 1; j++){
            if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(i+1)).name) > 0){
                showInfo temp = new showInfo();
                temp.name = ((showInfo)show.get(j)).name;
                temp.day = ((showInfo)show.get(j)).day;
                temp.time = ((showInfo)show.get(j)).time;

                ((showInfo)show.get(j)).time = ((showInfo)show.get(i)).time;
                ((showInfo)show.get(j)).day = ((showInfo)show.get(i)).day;
                ((showInfo)show.get(j)).name = ((showInfo)show.get(i)).name;

                ((showInfo)show.get(i)).time = temp.time;
                ((showInfo)show.get(i)).day = temp.day;
                ((showInfo)show.get(i)).name = temp.name;
            }
        } 
    } 

どんな助けでも素晴らしいでしょう!前もって感謝します。:)

(PS。「showInfo」を「ShowInfo」に変更する必要があることは承知していますが、終了したら変更します。)

4

5 に答える 5

3

コードの問題の 1 つは、 と比較show.get(i)show.get(i+1)てから と交換show.get(i)することshow.get(j)です。と比較する必要がありますshow.get(j)。また、内側のループはj < show.size()ではなくに移動する必要がありshow.size() - 1ます。i + 1最後に、 atの代わりに at で内側のループを開始できます0

交換する必要があると判断したら、各フィールドを交換するのではなく、リスト内の参照を交換するだけで、はるかにうまくいく可能性があります。

showInfo tmp = (showInfo)show.get(i);
show.set(i, show.get(j));
show.set(j, tmp);
于 2013-09-17T16:42:09.747 に答える
0

ここで間違って使用してiいます:

if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(i+1)).name) > 0){

2つ目ijバブルソートを達成することだと思います

if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(j+1)).name) > 0){ 
于 2013-09-17T16:42:21.713 に答える
0

これがあなたが探しているものかどうかはわかりませんが、ジェネリックの代わりにキャストを使用しています。とにかく、これが役立つことを願っています

ペーストビン

于 2013-09-17T18:03:03.363 に答える