逛贴吧的时候看到一个帖子有一段这样的代码
public class Forgg {
public static void main(String[] args) {
kk:
for (int i = 0; i < 11; i++) {
if(i == 8 ){
break kk;
}else{
if(i%2 != 0) {
System.out.println(i);
}
}
}
}
}
看到这样的代码果断的想到了假如i==8是true的话会不会产生死循环。从来没有接触过这样的代码感觉不是很理解,难道跳转到kk处代码就不会在执行for循环了?
于是就写下下面的代码来进行测试
package org.pcl;
import java.util.Scanner;
/**
* 演示中断中的标号(似Goto语句)
* @author yifan
* @version 1.0 2014-05-06
*/
public class Forgg {
public static void main(String[] args) {
String[] msgs = new String[] {"输入您的姓名", "输入您的年龄"};
Scanner scan = new Scanner(System.in);
/*
* 在这里定义标号执行顺序是
* 1.用户输入
* 2.测试输入
* 3.测试失败直接跳转到标号下循环语句的下句也就是System.out.println("我执行了");
* 根据单步跟踪来分析后得出的结论就是这个标记仅仅是表示跳出那个循环
* 表达能力有限希望见谅,最终极的办法就是加断点然后F6单步跟踪来看看是怎样运行的
*/
EnterAgain:
for(int i=0; i<msgs.length; i++) {
System.out.println(msgs[i]);
String tmp = scan.nextLine();
//System.out.println(tmp);
/*
if(!tmp.equals("张三") && msgs[i].equals(msgs[0])) {
break EnterAgain;
} else if(!tmp.equals("22") && msgs[i].equals(msgs[1])) {
break EnterAgain;
} else {
System.out.println(tmp);
}
*/
if(tmp.equals("张三") || tmp.equals("22")) {
System.out.println(tmp);
} else {
break EnterAgain;
}
}
System.out.println("我执行了");
}
}
哎 写这个真的很难,不过自己理解就好。
建议看不懂的朋友能够自己单步下,我是真说不明白了