[《think in java》学习——流程控制]标签和循环结合使用

来源:互联网 发布:张定国 非诚勿扰 知乎 编辑:程序博客网 时间:2024/04/28 11:46
package com.condition.label;/** * @author Administrator 测试循环中标签的作用 */public class ConditionLabel {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint test = 0;outer: // 标签outer必须紧接着循环语句,否则continue或break,编译会报错找不到标签for (int j = 0; j < 9; j++) {System.out.println("j = :" + j);for (int i = 0; i < 9; i++) {if (i < 7) {System.out.println("i = :" + i);} else if (i == 7) {System.out.println("continue to outer...");continue outer; // 进入下次外层循环} else {System.out.println("break to outer...");break outer;    //中断内外循环}}}}}

输出如下:

j = :0

i = :0

i = :1

i = :2

i = :3

i = :4

i = :5

i = :6

continue to outer...

j = :1

i = :0

i = :1

i = :2

i = :3

i = :4

i = :5

i = :6

continue to outer...

j = :2

i = :0

i = :1

i = :2

i = :3

i = :4

i = :5

i = :6

continue to outer...

因为continue outer是进入下次外层循环,因此i的值永远不会为8,不会进入else,执行:System.out.println("break to outer...");

package com.condition.label;/** * @author Administrator 测试循环中标签的作用 */public class ConditionLabel {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubouter: // 标签outer必须紧接着循环语句,否则continue或break,编译会报错找不到标签for (int j = 0; j < 5; j++) {System.out.println("j = :" + j);inside:        // 标签inside必须紧接着循环语句,否则continue或break,编译会报错找不到标签for (int i = 0; i < 3; i++) {if (i < 1) {System.out.println("i = :" + i);} else if (i == 1) {System.out.println("continue to inside...");continue inside; // 进入下次内层循环} else {System.out.println("break to inside...");break inside;    //中断内循环}}if(j < 2){System.out.println("continue to outer...");continue outer; // 进入下次外层循环}else if(j == 2){System.out.println("break to outer...");break outer; // 中断外循环}}}}

输出如下:

j = :0

i = :0

continue to inside...

break to inside...

continue to outer...

j = :1

i = :0

continue to inside...

break to inside...

continue to outer...

j = :2

i = :0

continue to inside...

break to inside...

break to outer...