介绍

C++中有goto能直接跳出多层循环,那么Java中有类似的语句吗?

break retry 跳到retry处,且不再进入循环
continue retry 跳到retry处,且再次进入循环

public static void main(String[] args) {
breakRetry();
continueRetry();
}

private static void breakRetry() {
int i = 0;
retry:
for (; ; ) {
System.out.println("start");
for (; ; ) {
i++;
if (i == 4)
break retry;
}
}
//start 进入外层循环
//4
System.out.println(i);
}

private static void continueRetry() {
int i = 0;
retry:
for(;;) {
System.out.println("start");
for(;;) {
i++;
if (i == 3)
continue retry;
System.out.println("end");
if (i == 4)
break retry;
}
}
//start 第一次进入外层循环
//end i=1输出
//end i=2输出
//start 再次进入外层循环
//end i=4输出
//4 最后输出
System.out.println(i);
}

示例

给一个数组int arr[][]={{1,2,3},{4,5,6,7},{8,9,5}}找到数值5打印,并跳出循环,用多种方式实现?

class Solution {

public static void main(String[] args) {

List<List<Integer>> list = new ArrayList<>();
list.add(Arrays.asList(1, 2, 3));
list.add(Arrays.asList(4, 5, 6, 7));
list.add(Arrays.asList(8, 9, 5));
retry:
for (int i = 0; i < list.size(); i++) {
List<Integer> tempList = list.get(i);
for (int j = 0; j < tempList.size(); j++) {
if (tempList.get(j) == 5) {
System.out.println("5");
break retry;
}
}
}
// 5
// end
System.out.println("end");
}

}