1

二分探索木 (BST) とランダム化された BST を作成しています。これらの作業の両方に対する私の方法はすべて機能し、私はより単純だと感じるものにこだわっています。失敗しているコードは非常に単純です。余談ですが、私は標準のリダイレクトを使用して値を読み取るので、一度に 1 つずつではなく、一度に多くの値を入力します。

while ( console.hasNextInt() ) {
   key = console.nextInt();
   System.out.println(key);
   head.remove( key );
}

ここで、console はスキャナーの名前で、key はツリーのキーを読み込むために使用されるグローバル変数です。デバッグは、最後の整数が読み取られるまでループを正しく通過することを示しています。その後、読み取る整数がなくなったにもかかわらず、while ループに再び入るように見えます。私は明らかにどこかで間違いを犯していますが、それは私には明らかではなく、これを無駄に言い換えようとして数時間を費やしました. どんな助けでも大歓迎です。

編集 - 私が入力しているものの例は次のとおりです。

820426496 648711744 834882112 261937632 475255968 311993216 834882112

834882112 までのすべての数値を読み取り、while ループに戻りますが、その理由はわかりません。

コードに関する限り、これはまさに混乱しているコードです。他のすべては、スキャナーのセットアップなどです。

4

1 に答える 1

2

コメントで述べたようhasNextInt()に、ストリーム内の次のトークンが int の場合は true を返し、int でない場合は false を返します。ループが最後の int を読み取ったら、hasNextInt()次のトークンが入力されるのを待って、それが有効な整数かどうかを判断します。ループを止めたい場合は、整数以外を入力する必要があります。

于 2012-10-21T12:52:58.797 に答える