如果阻止我怎么能走出来?

时间:2013-01-11 13:15:16

标签: 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" );
               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" );
    }
}

我想要做的就是从第三个if到第一个if。

我们知道可以在循环中使用中断,继续。我们可以为实现相同的目标吗?

5 个答案:

答案 0 :(得分:3)

创建一个封装#2和#3的方法。然后来自#3 if块内的return

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;
}

使用方法而不是嵌套的if块可以提高整体可读性和理解代码的能力。您应该给该方法一个有意义的名称(当然 not perform2ndAnd3rdIf() )而不是代码注释。

答案 1 :(得分:3)

好吧,你可以打破任何一个街区:

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

有关详情,请参阅Java Language Specification

但是,如果您尝试在我的某个项目中提供此代码,我们可能会有文字。

答案 2 :(得分:1)

我不确定你要求通过这个来实现。在第三个循环之后再添加一个条件,如果只满足条件,则执行第二个循环的剩余部分。你可以在里面设置这个条件第三个是阻止。

而不是所有这些,你可以切换到更加清洁的“开关”。

答案 3 :(得分:1)

我会引入第二个状态标志来捕捉最内层的情况:

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

答案 4 :(得分:1)

您可以随时执行此操作:

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

但我认为你应该重构你的代码。