2

私のコードの何が問題になっていますか?セットに奇数が含まれているかどうかを調べようとしています

public static boolean hasOdd (Set<Integer> set) {
    Iterator iterator;
    iterator = set.iterator();

    while (iterator.hasNext()) {
        if(iterator.next()%2 != 0) {
            return true;
        } else {
            return false;
        }
    }
}
4

3 に答える 3

7

問題は、イテレータの最初の要素のみをチェックすることです。現在の要素が偶数の場合は戻らないはずですが、次の要素に移動します。もう1つの問題は、自動アンボックスを機能させる場合Iterator<Integer>は、rawだけでなく、を使用する必要があることです。Iterator

また、foreachループを使用すると、より簡潔で読みやすくなります。

for (Integer i : set) {
    ...
}

これは宿題のように見えるか、少なくとも自分で理解できるもののように見えるので、解決策は示しませんが、上記のヒントのみを示します。

于 2012-07-28T09:05:14.177 に答える
1

あなたのメソッドは、セットの最初の要素をチェックし、それが奇数かどうかを判断するだけです。ただし、最初の奇数を見つけた場合にのみ、ループから抜けることを確認する必要があります。

于 2012-07-28T09:11:13.207 に答える
0

またはあなたはこのように試すことができます

Iterator<Integer> iterator = set.iterator();

ループ内でelseを使用しないでください。また、falseステートメントをメソッドの最後のステートメントにする必要があります

于 2012-07-28T09:27:00.503 に答える