我想使用break
语句打破嵌套for循环而不使用。原因是我在程序中稍后使用break
语句时遇到问题。
源代码是:
for (int i = 0; i < 100; i++){
for (int j = 10; j < 100; j++) {
code;
if (code == true) {
:break out here:
}
}
}
答案 0 :(得分:1)
这是goto声明不会很糟糕的少数情况之一。更好的是,将循环提取到另一个方法并使用return语句,如@S R SH所述。
答案 1 :(得分:1)
尝试这样做,非常简单。
boolean flag = true;
for (int i = 0; i < 100; i++){
for (int j = 10; j < 100; j++) {
code;
if (code == true) {
j = 101; //any value that would make the condition check in for loop false
flag = false;
}
}
if (flag==false) {
i = 101; //any value that would make the condition check in for loop false
}
}
答案 2 :(得分:1)
另一种可能性是使用布尔标志,该标志被添加到for循环中的条件。
boolean breakOut = false;
for (int i = 0; i < 100 && !breakOut; i++) {
for (int j = 10; j < 100 && !breakOut; j++) {
code;
if (code == true) {
breakOut = true;
}
}
}
答案 3 :(得分:0)
for(int i = 0; i < 100; i++){
for (int j = 10; j < 100; j++) {
//code;
if(code == true){
j = 100; //will cancel the inner for loop.
}
}
}
答案 4 :(得分:0)
根据你要打破的循环使i和/或j超过100
答案 5 :(得分:0)
在此更改。
public void firstFor(int index){
for(int i =index; i<100;i++){
secondFor();
}
}
public void secondFor(){
for(int j=0;j<100;j++){
//your code...
if(code==true) return;
}
}
答案 6 :(得分:0)
将代码块放在单独的方法中并使用return。这将是最干净的方法。
答案 7 :(得分:0)
您可以使用标签:
firstLabel: for (int i = 0; i < 100; i++) {
secondLabel: for (int j = 10; j < 100; j++) {
System.out.println("J = " + j);
if (j == 50) {
break firstLabel;
}
}
}