我应该得到用户输入的整数的乘积,输入的数字小于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);
}
答案 0 :(得分:1)
首先,您的测试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);
答案 1 :(得分:0)
在您的代码中,while
循环会一直运行。这就是为什么它不打印任何东西。
请改为尝试:
while(input.hasNextInt() && num>=0){
num = input.nextInt();
product = product*num;
System.out.print("Product: "+product);
}
编辑:尝试输入小于0
的数字,然后您的while
循环应终止。
答案 2 :(得分:0)
您可以尝试这样的事情:
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);
}