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

时间:2016-07-30 03:10:43

标签: java if-statement while-loop nested

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 #");

然而,它无法正确打印。

5 个答案:

答案 0 :(得分:0)

回答你的问题......就像这样:

int i = 1;     // HERE
while (i <= num) {
    if (num < 0) {
        System.out.println("You entered a negative #");
    }
    fact *= i;
    i++;    
}

然而,这不会起作用。

假设&#34; num&#34;你读的小于零。

  • 在标有&#34; HERE&#34;的声明中,我们设置了#34; i&#34;一个。
  • 在下一个声明中,我们测试&#34; i&lt; NUM&#34 ;.
  • 从&#34; num&#34;小于零,该测试给出&#34; false&#34;我们跳过整个循环!

这意味着循环体中的条件语句不会被执行...如果&#34; num&#34;小于零。

由于这显然是家庭作业,我会留给你弄清楚你应该在这里做什么。但是(提示!)它没有把条件放在循环中。

(请注意:我已经更正了代码中的一些样式错误。将原始版本与我的版本进行比较。这就是 编写Java代码的方式。)

答案 1 :(得分:0)

这个问题很难理解,但从我读到的内容看来,你想要一个循环运行,直到输入的值符合你的前提条件

System.out.println("Enter a non negative number :: ");
int num = type.nextInt();
while(num < 0){
    System.out.println("The number you entered was negative!");
    System.out.println("Enter a non negative number :: ");
    num = type.nextInt();
}

这样的循环对于确保您使用的数据在操作的前提条件下可能会导致DivideByZero错误或其他问题至关重要。应该在使用num的值之前放置此循环,以便确保它在程序的上下文中。

答案 2 :(得分:0)

问题在于,如果num为否定值,则不会进入while loop,因为在while loop初始化i=1之前,因为任何负数都小于1while loop的条件变为假。如果您想检查num是否为负数,请在if condition之前插入while loop,如下所示

   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;

         if(num < 0) {
           System.out.println("You entered a negative #");
          }
         else{

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

}

答案 3 :(得分:0)

如果你在循环中检查然后它将无效,它仍会乘以df1 <- structure(list(V1 = c("x,f,t,h,b,g", "d,g,h", "g,h,a,s,d", "f", "q,w,e,r,t,y,u,i,o")), .Names = "V1", class = "data.frame", row.names = c(NA, -5L)) df2 <- structure(list(v1 = c("x", "d", "g", "f", "q"), v2 = c("f", "g", "h", "", "w"), v3 = c("t", "h", "a", "", "e"), v4 = c("h", "", "s", "", "r"), v5 = c("b", "", "d", "", "t"), v6 = c("g", "", "", "", "y"), v7 = c("", "", "", "", "u"), v8 = c("", "", "", "", "i"), v9 = c("", "", "", "", "o")), .Names = c("v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9"), row.names = c(NA, -5L), class = "data.frame") 。在开始while循环之前,您需要确保fact不是负数。

num

另外,在使用它们时,您应该关闭扫描仪。

答案 4 :(得分: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");
}

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

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