在解决java上的问题时,我发现无法突破位于for循环内的if语句,而此for循环位于另一个if语句内。代码片段如下:
package experment;
public class myclass_2{
public static void main(String[] args){
int t;
int remaining;
boolean is_undertaker_dead = false;
Scanner s = new Scanner(System.in);
System.out.println("hey");
t = s.nextInt();
for(int i=0; i<t; i++)
{
String S = Integer.toString(s.nextInt());
char c[] = S.toCharArray();
for(int j=0; j<c.length; j++)
{
if(c[j]=='2')
{
remaining = c.length-j;
for(int a=j; a<c.length; a++)
{
if(remaining<c.length)
{
remaining=0;
}
if(c[j+remaining]=='1')
{
is_undertaker_dead=true;
break;
}
remaining--;
}
}
}
if(is_undertaker_dead==true)
{
System.out.println("The Streak is broken!");
}
else
{
System.out.println("The streak");
}
}
}
一旦要调用break语句,我想打破所有for循环。我知道这只是打破了if语句,但循环仍在继续。我也尝试使用在stackoverflow和google上找到的label方法,但是它们以某种方式不起作用并使我更加困惑。预先感谢您的支持,这非常重要!
答案 0 :(得分:1)
首先,break
不会中断if语句,它会中断循环,在您的情况下是第二个for
循环。
在您的代码中,break
脱离了内部for
循环。要突破外部for循环,只需将以下条件置于外部循环的右括号之前
if (is_undertaker_dead)
break;
答案 1 :(得分:0)
在第一个循环之前添加此行:
mainloop:
要打破所有循环,请调用此
break mainloop;
答案 2 :(得分:0)
使用标记的中断版本:
outerLoop:
for(int j=0; j<c.length; j++)
{
if(c[j]=='2')
{
remaining = c.length-j;
for(int a=j; a<c.length; a++)
{
if(remaining<c.length)
{
remaining=0;
}
if(c[j+remaining]=='1')
{
is_undertaker_dead=true;
break outerLoop;
}
remaining--;
}
}
}
您可以在Java tutorial中找到更多信息和示例。