0

そのため、プログラムに文字列の各文字を実行させ、数字が見つかった場合は、パスワードを出力して for ループと while ループを終了させようとしています (while ループは含まれていませんが、'while (テスト == 0)')。しかし、数字なしでパスワードを入力すると、文字列全体がスキャンされ、数字が必要であることが表示されます。どういうわけか、数字でパスワードを入力すると、完全に機能します。しかし、数字なしでパスワードを入力すると、エラー メッセージが表示されます... 何かアイデアはありますか?

これが私のコードです:

for (int num = 0; num <= passw.length(); num++){
    if (Character.isDigit(passw.charAt(num))){
        num += 1000;
        test++;
        System.out.println(passw);
    }

    if (num >= passw.length() && num <= 1000){
        System.out.println("You need a number");
    }

}
4

3 に答える 3

2
for (int num = 0; num <= passw.length(); num++){

インデックスは0notから始まります1

したがって、ループは次のようになります。

for (int num = 0; num < passw.length(); num++){
于 2012-12-17T05:16:28.547 に答える
2
for (int num = 0; num <= passw.length(); num++){

文字列の末尾を過ぎた文字に移動します。やるだけ

for (int num = 0; num < passw.length(); num++){

それが役立つことを願っています!

于 2012-12-17T05:16:34.647 に答える
2

あなたはそれについて間違った方法で進んでいます。すべてのコードを次のように置き換えます。

if (passw.matches("\\D*")) {
    System.out.println("You need a number");
}

\D*これは、 「すべての文字が非数字である」ことを意味するregexを使用します

于 2012-12-17T05:18:47.097 に答える