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来澄清!我随机放置标签只是为了说明如何进行,但感谢您指出这一点。