今天在java语法中看到了一个“带标签的break语句”,与C++中的goto语句相像但又不完全相同。java提供的“带标签的break语句”用于跳出多重嵌套的循环语句。下面是一个实例:
import java.util.*;
public class Lottery {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n;
System.out.println("please input the number:");
n = in.nextInt();
read_data: //标签
while(n<=0)
{
System.out.println("n<=0!");
for(int i=1;i<3;i++)
{
System.out.println("i="+i);
break read_data; //跳出while循环
}
}
System.out.println("loop has stopped");
}
}
在这个代码中有一个嵌套循环,标签设置在外层的while循环上面。按照语法规则,第一次执行到break语句时,i=1,只会输出一次i的值,然后就会跳出while循环,直接输出“loop has stopped”。下面是运行结果:
由结果可知,嵌套循环的确只执行了一次。那么“标签”是如何知道跳出哪个语句呢?当在read_data:下再增加了一个输出语句后:
read_data:
System.out.println("hello");
while(n<=0)
{
运行结果为:
显示:失去了标签。合理推测,标签必须放在希望跳出的最外层循环(语句块)之前。