Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对嵌套的if语句使用while循环_Java_Loops - Fatal编程技术网

Java 对嵌套的if语句使用while循环

Java 对嵌套的if语句使用while循环,java,loops,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(true){ if(n35) 系统输出打印(“大于35”) 其他的 计算(n) } 我尝试使用while loop循环代

虽然我知道我错过了一些东西,但我似乎无法让我的头脑围绕一个简单的循环

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(true){
if(n<0)
系统输出打印(“小于0”)
否则,如果(n>35)
系统输出打印(“大于35”)
其他的
计算(n)
}
我尝试使用
while loop
循环代码并请求输入,直到用户输入大于0小于35的值,我尝试使用continue,但没有效果,提前感谢


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

您不是在“请求输入”。同时,while循环将永远不会退出。你可能至少想在那里的某个地方休息一下

我认为您缺少用户的输入:

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)    
}
Scanner-in=新的扫描仪(System.in);
int n=0;
而(n!=27){/*在这里可以是任何数字,而不是27,偶数-1*/
n=in.nextInt();
if(n<0)
系统输出打印(“小于0”)
否则,如果(n>35)
系统输出打印(“大于35”)
其他的
计算(n)
}
另外,我建议您不要使用while(true)因为您将有无止境的循环,您可以设置一个条件:while(n!=27)


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

您可以使用do while。像这样:

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

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

我也不确定该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;
 } 
}
Boolean checked=true;
While(选中){
if(n<0){
系统输出打印(“小于0”);
}
否则,如果(n>35){
系统输出打印(“大于35”)'
}
否则{
计算(n)
选中=错误;
} 
}

希望能有帮助。干杯

代码中缺少两件事

1) 在
while
循环中,没有更新变量
n
值的机制。i、 e,如果在外循环中,n的值设置为2,则循环将继续打印大于35的
。因此需要一种机制来更新它的价值

2)
while
循环的断开机构。因为条件是
while(true)
,并且循环内部没有
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();
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int n=0;
while(true){
n=scan.nextInt();
if(n<0)
系统输出打印(“小于0”);
否则,如果(n>35)
系统输出打印(“大于35”);
否则{
钙(n);
打破
}
}
scan.close();
}
那么:

   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;
         }
     }
Scanner-in=新的扫描仪(System.in);
int n=0;
while(true){
n=in.nextInt();
if(n<0)
系统输出打印(“小于0”);
否则,如果(n>35)
系统输出打印(“大于35”);
否则{
钙(n);
打破
}
}
//如果使用jdk 1.7或更高版本,请在finally块中关闭扫描仪。
try(扫描器s=新扫描器(System.in)){
int n;
while(true){
n=s.nextInt();
if(n<0){
//请求大于0的值
系统输出打印(“请输入大于0的值”);
//额外的打印语句,以便在消息后的下一行打印输入
System.out.println();
}否则,如果(n>35){
//索要低于35的价值
系统输出打印(“请输入小于35的值”);
System.out.println();
}否则{
//处理输入,如果收到正确的输入,则中断
钙(n);
打破
}
}
}


计算(n)
做什么?你在哪里要求输入?这只是我们无法看到的输出和
calc
——建议阅读并发布@Juan即使
n
发生变化,循环也是无限的,因为
while(true)
。不是吗?与其…else calc(n),不如尝试else break;然后在循环后调用calc(n)?@lealcelderio是的,对,我认为这不是问题所在(但是我们无法判断,因为OP忽略了相关代码)。但是,我认为问题出在
while(true)
部分…@Simion,用户如何退出while循环?@Simion,在您编辑您的条件之前,我一直在问。这仍然是一个非常奇怪的条件。例如,它可以是任何条件,27是键ESC的ASCII码(在这种情况下它与此无关),所以我在这些地方使用了这个值。错!n不能同时小于0和大于35,因此这将始终计算为false。此条件永远不会返回true,因为任何值都不能同时小于0和大于35。。。它可能像0&&;抱歉是个错误。如果我们用| |代替&&可以解决这个问题。意思是:重复(读取n的值),直到n的值大于0小于35。@Phillectrov如果输入的值不在所需的范围内,它将永远不会更新,从而导致无限循环。您可能希望修改此项以获得一些输入。它将继续循环,直到n在定义的范围内。请重新阅读代码。当我们不更新它的值时,n将如何落在定义的范围内?我正在跟踪你所说的。对不起,我试过了,如果用户输入的值大于35,它会打印循环停止,我应该在我提供的代码中显示。我的问题是循环直到达到要求input@Prez:因此,它正在按预期工作。如果输入是负数
    // 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;
            }
        }
    }