如何在 while 循环中输入 if 语句?

新手上路,请多包涵
import java.util.Scanner;
public class ex11
{
static Scanner type=new Scanner(System.in);
    public static void main(String args[])
    {
        int fact=1;
        System.out.println("Enter a natural number ");
        int num=type.nextInt();

        int i=1;
        while(i<=num)
        {
            fact*=i;
            i++;
        }
        System.out.println("Factorial of number " + num + " is " + fact);
    }
}

我试图在 while 循环中放置一个条件语句。要测试的条件是,如果 num 是负数, S.O.P.("You entered a negative #"); 换句话说,

 if(num<0)
    S.O.P.("You entered a negative #");

但是它不能正确打印。

原文由 Rudy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 621
2 个回答

如果您检查循环内部,那么它将不起作用,它仍然会乘以 fact 。在开始 while 循环之前,您需要确保 num 不是负数。

 int num = 0;
do {
    if (num<0){
        System.out.println("You printed out a negative number");
    }
    System.out.println("Enter a natural number ");
    int num=type.nextInt();
} while (num<0);

另外在旁注中,您可能应该在使用完扫描仪后关闭它们。

原文由 Arthur 发布,翻译遵循 CC BY-SA 3.0 许可协议

您基本上必须检查数字是否小于 0。这是在接受输入时完成的。您可以通过这种方式在 while 循环中获取输入:

 System.out.println("Enter a natural #");
while(true){ //loop runs until broken
    num = type.nextInt();
    if(num>=0)
        break;
    System.out.println("Wrong input. Please enter a positive number");
}

程序控制跳出循环if num>=0 ,即肯定,否则,它继续循环的下一部分并显示错误信息并再次接受输入。

请注意,自然数是 >= 1。在您的程序中,您实际上是在尝试输入一个 >= 0 的整数。

原文由 progyammer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题