使用while循环嵌套if语句

时间:2018-08-14 17:33:25

标签: java loops

尽管我知道我缺少了一些东西,但似乎无法使我的头脑变得简单。

while (true){
if (n < 0)
    System.out.print("less than 0")
else if (n > 35)
    System.out.print("greater than 35")
else
    calc(n)    
}

我正在尝试使用while loop来循环代码并要求输入,直到用户输入的值大于0且小于35,我尝试使用“继续”但无济于事,在此先感谢enter image description here

我已经添加了完整代码的sc,在代码底部请求输入后,while循环将进入

7 个答案:

答案 0 :(得分:0)

好吧,您不是在“寻求输入”。而且while循环永远不会退出。您可能至少要在某个地方休息一下。

答案 1 :(得分:0)

我认为您缺少用户输入:

Scanner in = new Scanner(System.in);
int n = 0;
while (n != 27){ /*Can be any number here instead of 27, even -1*/
n = in.nextInt();
if (n < 0)
    System.out.print("less than 0")
else if (n > 35)
    System.out.print("greater than 35")
else
    calc(n)    
}

我也建议您不要使用 while(true) ,因为您将遇到无限循环,您可以改用以下条件: while (n!= 27)

因此,每次输入27都会结束循环。

答案 2 :(得分:0)

我也不确定该calc方法,但也许您可以使用类似的方法?

Boolean checked = true;
While(checked) {
 if (n < 0) {
    System.out.print("less than 0");
 }
 else if (n > 35) {
    System.out.print("greater than 35")'
 }
 else {
    calc(n)
    checked = false;
 } 
}

希望有帮助。干杯

答案 3 :(得分:0)

您在代码中遗漏了两件事。

1)在while循环中,没有机制来更新变量n的值。也就是说,如果在外部循环中,n的值设置为2,则循环将继续打印Greater than 35。因此需要一种机制来更新其值

2)while循环的中断机制。因为条件为while(true),并且循环内没有break,所以循环将无限地继续。因此,需要一种循环中断机制

下面是一个示例代码,其中使用Scanner从控制台获取输入,而break用于中断循环条件

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int n = 0;
    while (true) {
        n = scan.nextInt();
        if (n < 0)
            System.out.print("less than 0");
        else if (n > 35)
            System.out.print("greater than 35");
        else {
            calc(n);
            break;
        }
    }
    scan.close();
}

答案 4 :(得分:0)

怎么样:

   Scanner in = new Scanner(System.in);
   int n = 0;

   while (true){
         n = in.nextInt();
         if (n < 0)
            System.out.print("less than 0");
         else if (n > 35) 
            System.out.print("greater than 35");
         else{
            calc(n);
            break;
         }
     }

答案 5 :(得分:0)

    // if using jdk 1.7 or above else close scanner in finally block.
    try (Scanner s = new Scanner(System.in)) {

        int n;
        while (true) {
            n = s.nextInt();
            if (n < 0) {
                // ask for value greater then 0
                System.out.print("Please enter a value greater then 0 ");
                // extra print statement so input will be printed on next line after message
                System.out.println();
            } else if (n > 35) {
                // ask for value less then 35
                System.out.print("Please enter a value less then 35");
                System.out.println();
            } else {
                // process input and break if correct input has received
                calc(n);
                break;
            }
        }
    }

答案 6 :(得分:-1)

您可以在一段时间内使用do。像这样:

do {
   calc(n);
} while(n < 0 || n > 35)

期望calc(n)函数读取用户输入值并将其放入n变量中。