你好,我是一名编程学生,我正在练习使用循环来验证输入。不幸的是,循环工作但完全跳过内循环...我现在收到错误消息或提示...
以下是我的代码:[我在本网站上的答案中为我们提供了关于验证输入的答案,因此我可以对其进行测试。]
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);
}
}
答案 0 :(得分:0)
如果首次执行while
循环时条件(在while
之后的括号中)为false,则会跳过while
循环。
您可以使用调试器逐步执行代码以查看正在进行的操作。
如果您不知道如何使用调试器,请停止您正在执行的所有操作,并执行一些Google搜索或任何您需要执行的操作以了解如何使用调试器。
答案 1 :(得分:0)
你的int号是NaN(不是数字)。尝试将其设置为-1,这样您就可以进入第一个循环。 在第二个循环中sc没有扫描输入它只是初始化。
答案 2 :(得分:0)
内循环:
while (!sc.hasNextInt())
{
System.out.println("That's not a number!");
sc.next(); // this is important!
}
number = sc.nextInt();
仅检查输入是否为数字,如果输入-123,则函数!sc.hasNextInt()
为假,因此它将跳过循环,如果要检查数字是否定数,请在之后添加此检查分配号码值:
if(number <= 0 ){
System.out.println("The number is negative!");
}
你不必再做一个循环来检查数字是否为负数,因为第一个循环有它,而do...while
循环将确保你必须至少运行一次循环