考虑这个代码示例。
此代码仅用于解释我的问题。
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。
我们知道可以在循环中使用中断,继续。我们可以为块实现相同的目标吗?
答案 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" );
}
}
但我认为你应该重构你的代码。