您的位置:首页 > 编程语言 > Java开发

Java中的流程控制

2009-06-19 22:50 405 查看

Java中的流程控制

break,continue,for,while,switch及标签的使用。
@author: http://blog.csdn.net/zhangjunhd/ 07-1-27

1.break和continue
break用于强行推出循环,不执行循环中剩余的语句。continue用于停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。看下面的代码:
public class BreakAndContinue {
public static void main(String[] args) {
for(int i=0;i<100;i++){
if(i==74) break;//Out of for loop
if(i%9!=0)continue;//Next iteration
System.out.println(i);
}
int i=0;
//An "infinite loop":
while(true){
i++;
int j=i*27;//40*27=1080,50*27=1350
if(j==1269)break;//out of loop
if(i%10!=0)continue;//Top of loop
System.out.println(i);
}
}
}
结果:
0
9
18
27
36
45
54
63
72
10
20
30
40

2.标签在for循环中的使用
看下面的代码:
public class LabeledFor {
public static void main(String[] args) {
int i=0;
outer:
for(;true;){//infinite loop
inner:
for(;i<10;i++){
System.out.println("i="+i);
if(i==2){
System.out.println("continue");
continue;
}
if(i==3){
System.out.println("break");
i++;//Otherwise i never gets incremented.
break;
}
if(i==7){
System.out.println("continue outer");
i++;//Otherwise i never gets incremented.
continue outer;
}
if(i==8){
System.out.println("break outer");
break outer;
}
for(int k=0;k<5;k++){
if(k==3){
System.out.println("continue inner");
continue inner;
}
}
}
}
}
}
结果:
i=0
continue inner
i=1
continue inner
i=2
continue
i=3
break
i=4
continue inner
i=5
continue inner
i=6
continue inner
i=7
continue outer
i=8
break outer
注意,break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于break跳过了递增表达式,所以在i==3的情况下直接对i执行递增运算。在i==7的情况下,continue outer语句会跳到循环顶部,而且也会跳过递增,所以这里也对i直接递增。
如果没有break outer语句,就没有办法从内部循环里挑出外部循环。这是由于break本身只能中断最内层的循环(continue也是如此)。
当然,如果想在中断循环的同时退出方法,简单地用一个return即可。

3.标签在while循环中的使用
看下面的代码:
public class LabeledWhile {
public static void main(String[] args) {
int i=0;
outer:
while(true){
System.out.println("Outer while loop");
while(true){
i++;
System.out.println("i="+i);
if(i==1){
System.out.println("continue");
continue;
}
if(i==3){
System.out.println("continue outer");
continue outer;
}
if(i==5){
System.out.println("break");
break;
}
if(i==7){
System.out.println("break outer");
break outer;
}
}
}
}
}
结果:
Outer while loop
i=1
continue
i=2
i=3
continue outer
Outer while loop
i=4
i=5
break
Outer while loop
i=6
i=7
break outer
注:Java中需要使用标签的唯一理由就是因为有循环嵌套,而且你想从多层嵌套中break或continue。

4.switch
switch语句要求使用一个选择因子,并且必须是int或char那样的整数值。例如,假如一个字符串或浮点数作为选择因子,那么它们在switch语句里不会工作。看下面的代码:
public class VowelsAndConsonants {
public static void main(String[] args) {
for(int i=0;i<100;i++){
char c=(char)(Math.random()*26+'a');
System.out.println(c+":");
switch(c){
case'a':
case'e':
case'i':
case'o':
case'u':System.out.println("vowel");
break;
case'y':
case'w':System.out.println("Sometimes a vowel");
break;
default:System.out.println("consonant");
}
}
}
}
①Math.random()范围为[0,1)
②char c=(char)(Math.random()*26+'a');
Math.random()会产生一个double值,所以26会转换成double类型,以便执行乘法运算。这个运算也会产生一个double值。这意味着为了执行加法,必须将’a’转换成double。最后使用显示的类型转换将double结果转回char。
③将一个float或double值转型成整数后,总是将小数部分“砍掉”。
参考Thinging in Java 3rd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: