0

この私のコードのリンクされたリストで検索方法を実行しています

Node item=head;
 String help=item.getKonten();
 System.out.printf("data to search");
    search=input.nextLine();

    while (help.compareTo(search)>0){
        if (help.equals(search)){
            System.out.println ("index " + index);
            ktemu=1;
        } else {
            item=item.getLink();
            bantu1=item.getKonten();        
        }
        index++;
    }

    if (ktemu == 0){
         System.out.println("data not found");
    }

出力データ: 1,2,3,4,5 データを検索する 2 データが見つからない このコードがうまくいかないため、インデックスが表示されない場所を誰かが指摘できます

4

2 に答える 2

2

compareToメソッドは、このオブジェクトが指定されたオブジェクトより小さい、等しい、または大きいため、負の整数、ゼロ、または正の整数を返します。

したがって、1 と 2 を比較すると、負の値が返され、-1>0false になります。だからそれはループから出てきます。

于 2012-12-05T09:03:20.927 に答える
0

bantu1がと同じではない限り反復してcariいますが、比較インターフェイスを使用して反復しています。equals を直接使用しないのはなぜですか? とにかく、 @Quoi が言うように、compare メソッドを使用したい場合は、それが < 0 である可能性があることを考慮する必要があるため、!=0より適している可能性があります。

これはどう:

private boolean find(Object input);
    while (true){
        if(item.equals(input)){
            return true;
        } else {
            if(item.getLink() == null) {
                 return false;
            } else {
                item=item.getLink();
            }
        }
    }
}
于 2012-12-05T09:05:09.973 に答える