2016-09-29 204 views
-5

我应该得到由用户util输入的整数的乘积,输入小于1的数字并打印产品。但是当我输入数字后程序什么都不做。我怎样才能解决这个问题。为什么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(input.hasNextInt() && num>=0){ 
     num = input.nextInt(); product = product*num; 
    } 
    System.out.print("Product: "+product); 
} 
+2

你可以分享你的代码? –

+0

public static void main(String [] args){ \t \t Scanner input = new Scanner(System.in); \t \t System.out.println(“Enter integers:”); \t \t int num = 1; int product = 1; (input.hasNextInt()&& num> = 0){ \t \t \t num = input.nextInt(); \t \t \t product = product * num; \t \t \t \t } \t \t 是System.out.print \t( “产品:” +产品); \t \t \t \t \t \t} –

+1

嗨内特。正如Amer所说,请将您的代码作为文本分享。我建议你查看http://stackoverflow.com/help/how-to-ask来帮助你开始。一个格式正确的问题会得到更快的回答。 –

回答

0

在你的代码中,while循环永远保持运行。所以这就是为什么它不打印任何东西。

试试这个:

while(input.hasNextInt() && num>=0){ 
    num = input.nextInt(); 
    product = product*num; 
    System.out.print("Product: "+product); 
} 

编辑:尝试输入比0数目少那么你while循环应该结束。

+0

我试过了你说的,但那不是我需要。这是我所需要的:例如,我输入2,3和-2,我希望程序打印产品6。 –

+0

@nate lin:看看Andreas的代码。 – 2016-09-29 17:51:04

1

首先,由于0小于1但不会结束循环,所以当您输入“小于1的数字”时,测试num>=0不是结束循环的测试。

二,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); 
+0

谢谢你正在工作 –

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); 
} 
+0

1)没有解释的代码不太有用。 2)通常最好使用'hasNextInt()',而不是使用异常。请参阅[防御性编程vs异常处理?](http://programmers.stackexchange.com/q/139171/202153) – Andreas

+0

@Andreas这是您的意见。如果他们需要解释,他们可以问,我会解释它。 – brso05

+0

@Andreas也可以链接到一个'python'问题......这是** java **。 – brso05