1

こんにちは私はプログラミングを始めたばかりの学生で、ループを使用して入力を検証する練習をしています。残念ながら、ループは機能しますが、内側のループを完全にスキップします...エラーメッセージまたはプロンプトが表示されます...

これが私のコードです:[入力の検証についてこのサイトの回答から借りたので、テストすることができました。]

import java.util.Scanner;

public class ValidationTest
{
public static void main(String[] args)
{
    Scanner sc = new Scanner(System.in);
    int number;
    do {
        System.out.println("Please enter a positive number!");
        while (!sc.hasNextInt()) 
        {
            System.out.println("That's not a number!");
            sc.next(); // this is important!
        }  
        number = sc.nextInt();
       } while (number <= 0);
    System.out.println("Thank you! Got " + number);
}
}
4

3 に答える 3

0

whileループが最初に実行されたときに条件 ( の後の括弧内) が false の場合、ループはスキップさwhilewhileます。

デバッガーを使用してコードをステップ実行し、何が起こっているかを確認できます。

デバッガーの使用方法がわからない場合は、現在行っていることをすべて停止し、Google 検索を実行するか、必要なことを行って、デバッガーの使用方法を見つけてください。

于 2012-10-13T01:45:35.570 に答える
0

int 番号は NaN (数値ではありません) です。最初のループに入ることができるように、-1 に設定してみてください。2 番目のループでは、sc は入力をスキャンすることはなく、初期化されるだけです。

于 2012-10-13T01:47:58.357 に答える
0

内側のループ:

 while (!sc.hasNextInt()) 
    {
        System.out.println("That's not a number!");
        sc.next(); // this is important!
    }  
    number = sc.nextInt();

入力が数値でないかどうかのみを確認します。-123 を入力した場合、関数!sc.hasNextInt()は false であるため、ループをスキップします。数値が負であることを確認する場合は、割り当て数値の後にこのチェックを追加します。

 if(number <= 0 ){
     System.out.println("The number is negative!");
 }

最初のループに負の値があるため、数値が負であるかどうかを確認するために別のループを作成する必要はありませんdo...while

于 2012-10-13T01:56:07.970 に答える