[英]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.