【面试二:在JAVA中如何跳出当前的多重嵌套循环】

跳出多重嵌套

目前java主要有for循环、while循环、switch循环、forEach循环,本次主要讲一下for循环和forEach循环。

for循环

break、continue都可以跳出多层嵌套循环

  1. break是跳出此层循环,继续进行下一层循环;
for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (j == 1) {
                    break;
                }
                System.out.println("i = " + i + ", j = " + j);

            }
        }
输出结果:
i = 0, j = 0
i = 1, j = 0
i = 2, j = 0
  1. continue是跳出本次循环,继续进行下一次循环;
for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (j == 1) {
                    continue;
                }
                System.out.println("i = " + i + ", j = " + j);

            }
        }
输出结果:
i = 0, j = 0
i = 0, j = 2
i = 1, j = 0
i = 1, j = 2
i = 2, j = 0
i = 2, j = 2
  1. 外层循环条件表达式的结果可以受到里层循环体代码的控制,从而跳出指定层数;
ok:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j == 5) {
                    break ok;
                }
                System.out.println("i = " + i + ", j = " + j);
            }
        }
输出结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 0, j = 3
i = 0, j = 4
  1. 外层循环条件表达式的结果可以受到里层循环体代码的控制,使用正则表达式判断。这种方式在实际开发中比较常见,一定要掌握;
    continue;
int arr[][] = {{1,2,3,4},{5,6,7,8,9},{10,11}};
        boolean found = false;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if (arr[i][j] == 5) {
                    found = true;
                    continue;
                }
                System.out.println("i = " + i + ", j = " + j);
            }
        }
输出结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 0, j = 3
i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 1, j = 4
i = 2, j = 0
i = 2, j = 1

break;

int arr[][] = {{1,2,3,4},{5,6,7,8,9},{10,11}};
        boolean found = false;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if (arr[i][j] == 5) {
                    found = true;
                    break;
                }
                System.out.println("i = " + i + ", j = " + j);
            }
        }
输出结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 0, j = 3
i = 2, j = 0
i = 2, j = 1
  1. 使用抛异常的方式,强制结束循环,我建议不要使用这种方法。这种虽然也可以结束循环,但是抛个异常,感觉有点耍流氓,实际开发没有用到过;
for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i = " + i + ", j = " + j);
                if (j == 5) {
                    throw new Exception("跳出多层循环");
                }
            }
        }
输出结果:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 0, j = 3
i = 0, j = 4
i = 0, j = 5
Exception in thread "main" java.lang.Exception: 跳出多层循环
	at com.java.basic.HelloWord.main(HelloWord.java:55)

forEach循环

  1. 普通的froEach循环和上面的是一样的,这次只做break演示;
int arr[] = {1,2,3,4,5,6,7,8};
        for (int a:arr) {
            System.out.println("a = " + a);
            if (a == 5) {
                break;
            }
        }
输出结果:
a = 1
a = 2
a = 3
a = 4
a = 5
  1. Java8中的特殊写法lambda表达式中,不能使用break和continue,会提示错误,Java8中使用return,会跳出当前循环,继续下一次循环,作用类似continue;
    【面试二:在JAVA中如何跳出当前的多重嵌套循环】_第1张图片
    【面试二:在JAVA中如何跳出当前的多重嵌套循环】_第2张图片
 //java8,forEach循环
        List<Student> list = new ArrayList<>();

        Student jack = new Student();
        jack.setName("jack");
        jack.setAge(18);
        jack.setGender("男");
        list.add(jack);

        Student jane = new Student();
        jane.setName("Jane");
        jane.setGender("女");
        jane.setAge(19);
        list.add(jane);

        Student lihua = new Student();
        lihua.setName("LiHua");
        lihua.setGender("男");
        lihua.setAge(20);
        list.add(lihua);

        list.forEach(student -> {
            if ("女".equals(student.getGender())) {
                return;
            }
            System.out.println("姓名:" + student.getName() + ", 性别:" + student.getGender() + ", 年龄:" + student.getAge());

        });

输出结果:
姓名:jack, 性别:男, 年龄:18
姓名:LiHua, 性别:男, 年龄:20

关于面试:这一部分属于基础知识部分,一定要特别熟练,面试官可能不经常问,感觉默认面试者是全部熟练掌握了,如果不熟练,一定要多练习,多看看!!!

你可能感兴趣的:(java,面试,开发语言)