[英]why the next statement after the while loop doesn't get executed
我应该得到用户 util 输入的整数的乘积,输入小于 1 的数字,然后打印乘积。 但是当我输入数字后程序什么都不做。 我怎样才能解决这个问题。
这是代码:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter integers: ");
int num = 1;
int product = 1;
while(input.hasNextInt() && num>=0){
num = input.nextInt(); product = product*num;
}
System.out.print("Product: "+product);
}
首先,您的测试num>=0
不是在“输入小于 1 的数字”时结束循环的测试,因为0
小于 1 但不会结束循环。
其次, num
的测试是在num
应用于product
。 你不想那样。
所以你需要在得到它之后测试num
,但在将它应用到product
之前。 如果小于 1,你想结束循环,你可以用break
语句来完成。
此外,将多个语句放在一行中通常是不好的风格。
System.out.println("Enter integers:");
int product = 1;
while (input.hasNextInt()) {
int num = input.nextInt();
if (num < 1)
break;
product *= num;
}
System.out.println("Product: " + product);
在您的代码中, while
循环将永远运行。 所以这就是为什么它不打印任何东西。
试试这个:
while(input.hasNextInt() && num>=0){
num = input.nextInt();
product = product*num;
System.out.print("Product: "+product);
}
编辑:尝试输入小于0
的数字,然后您的while
循环应该终止。
你可以尝试这样的事情:
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter integers: ");
int num = 1;
int product = 1;
while(true)
{
try
{
num = input.nextInt();
if(num < 0)
{
break;
}
product = product * num;
} catch(InputMismatchException e)
{
System.out.println("Please enter a number.");
input.nextLine();
}
}
System.out.print("Product: "+product);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.