Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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/1/typescript/9.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区?_Java_If Statement_Controls - Fatal编程技术网

Java 我怎样才能走出if区?

Java 我怎样才能走出if区?,java,if-statement,controls,Java,If Statement,Controls,考虑这个代码示例 这段代码只是用来解释我的问题 boolean status = false; for ( int i = 0; i <= 5; i++ ) { if ( i == 4 ) { System.out.println ( "Enter into first if" ); if ( status == false ) { System.out.println ( "Enter into second if"

考虑这个代码示例

这段代码只是用来解释我的问题

boolean status = false;
for ( int i = 0; i <= 5; i++ ) {
    if ( i == 4 ) { 
        System.out.println ( "Enter into first if" );
        if ( status == false ) {
               System.out.println ( "Enter into second if" );
               status = true;
               if ( status == true ) {
                    System.out.println ( "Enter into third if" );
                    //third if body
               }
               //second if body                             
        }
        //first if body
        System.out.println ( "Before exiting first if" );
    }
}
boolean状态=false;

对于(int i=0;i我不确定您试图通过此方法实现的需求。在第三个循环后再放置一个if条件,如果仅满足该条件,则执行第二个循环的剩余部分。您可以在第三个if块内设置该条件


与所有这些不同的是,您可以切换到“switch”,这将更加干净。

创建一个封装if#2和#3的方法。然后
从#3 if块内部返回

boolean status = false;
for ( int i = 0; i <= 5; i++ ) {
    if ( i == 4 ) { 
        System.out.println ( "Enter into first if" );
        status = perform2ndAnd3rdIf(status);
        System.out.println ( "Before exiting first if" );
    }
}

private boolean perform2ndAnd3rdIf(boolean status) {
    if ( status == false ) {
        System.out.println ( "Enter into second if" );
        status = true;
        if ( status == true ) {
            System.out.println ( "Enter into third if" );
            return status;
            //third if body
        }
        //second if body                             
    }
    return status;
}
boolean状态=false;

对于(inti=0;i我将引入第二个状态标志来捕捉最内部的条件:

boolean secondStatus = false;
boolean status = false;
for ( int i = 0; i <= 5; i++ ) {
    if ( i == 4 ) { 
        System.out.println ( "Enter into first if" );
        if ( status == false && secondStatus == false ) {
               System.out.println ( "Enter into second if" );
               status = true;
               if ( status == true ) {
                    System.out.println ( "Enter into third if" );
                    //third if body
                    secondStatus = true;
               } else {
                   //second if body
               }                           
        }
        //first if body
        System.out.println ( "Before exiting first if" );
    }
}
boolean secondStatus=false;
布尔状态=假;

对于(int i=0;i您始终可以这样做:

mylabel:
boolean status = false;
for ( int i = 0; i <= 5; i++ ) {
    if ( i == 4 ) { 
        System.out.println ( "Enter into first if" );
        if ( status == false ) {
               System.out.println ( "Enter into second if" );
               status = true;
               if ( status == true ) {
                    System.out.println ( "Enter into third if" );

                    break mylabel;

                    //third if body
               }
               //second if body                             
        }
        //first if body
        System.out.println ( "Before exiting first if" );
    }
}
mylabel:
布尔状态=假;

对于(int i=0;i那么,您可以断开到任何块:

public class Bar {

  static void foo(boolean b) {
    foo: {
      if (b) {
        break foo;
      }
      System.out.println(b);
    }
  }

  public static void main(String[] args) {
    foo(true);
    foo(false);
  }
}
输出:

false
有关更多信息,请参阅


但是,如果您试图在我的一个项目中交付此代码,我们可能会有文字。

添加
while
循环和
中断
语句的简单组合可能会有所帮助

boolean status = false;
for ( int i = 0; i <= 5; i++ ) {
    if ( i == 4 ) { 
        System.out.println ( "Enter into first if" );
        while(True) {
            if ( status == false ) {
                System.out.println ( "Enter into second if" );
                status = true;
                if ( status == true ) {
                    System.out.println ( "Enter into third if" );
                    break;//The key statement
                    //third if body
                }
                //second if body                             
            }
            break;//Don't forget break while loop
        }          
        //first if body
        System.out.println ( "Before exiting first if" );
    }
}
boolean状态=false;

对于(int i=0;i为什么不直接更改
if
语句呢?不清楚您想要实现什么。在这种情况下,与其问如何逃避if,不如看看实际问题并重构代码以满足您的需要。使用
switch
语句?如果您不想超过一个,最坏的情况是使用标志变量。。。;)为什么有一行状态被设置为true,然后在检查状态是否为true之后立即执行?不完全是这样,这不会从第三个if中引出。它只是在下一个循环中忽略第二个if。如果“//second if body”则不起作用不是注释,而是一行代码。我认为OP希望第一个if语句继续执行——“我要做的就是从第三个if到第一个if。”——这意味着您将mylabel:放在第二个if之前(例如,“mylabel:if(status==false)”),因此在第二个if的末尾出现了中断,但我认为我们需要OP来澄清!我随机放置标签只是为了说明如何进行,但感谢您指出这一点。