再探java基础——break和continue的用法

再探java基础——breakcontinue的用法

break

break可用于循环和switch...case...语句中。

用于switch...case中:

执行完满足case条件的内容内后结束switch,不执行下面的语句。

eg:

public static void breakSwitch1() {
		int n = 1;
		switch (n) {
		case 1:
			System.out.println("this is one.");
			break;
		case 2:
			System.out.println("this is two.");
			break;
		default:
			System.out.println("Others.");
		}
	}
结果:

this is one.

eg2:

public static void breakSwitch2() {
		int n = 1;
		switch (n) {
		case 1:
			System.out.println("this is one.");
			//break;
		case 2:
			System.out.println("this is two.");
			break;
		default:
			System.out.println("Others.");
		}
}
结果:

this is one.

this is two.



用于循环中

break;结束本层循环。

eg:

public static void breakTest1() {
		System.out.println("begin to circulating.");
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (i == 2 && j==3) {
					System.out.println("break is executed!");
					break;
				}
				System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

结果:

begintocirculating.

0*0=0 0*1=0 0*2=0 0*3=0 0*4=0

1*0=0 1*1=1 1*2=2 1*3=3 1*4=4

2*0=0 2*1=2 2*2=4 breakisexecuted!

3*0=0 3*1=3 3*2=6 3*3=9 3*4=12

4*0=0 4*1=4 4*2=8 4*3=12 4*4=16


break[flag];结束带有[flag]标记层到本层的所有循环。

eg1:

public static void breakTest2() {
		System.out.println("begin to circulating.");
		loop:for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (i == 2 && j==3) {
					System.out.println("break is executed!");
					break loop;
				}
				System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

结果:

begintocirculating.

0*0=0 0*1=0 0*2=0 0*3=0 0*4=0

1*0=0 1*1=1 1*2=2 1*3=3 1*4=4

2*0=0 2*1=2 2*2=4 breakisexecuted!


eg2:

public static void breakTest3() {
		loop: for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("level " + i + ":");
				for (int k = 0; k < 5; k++) {
					if (i == 1 && j == 2 && k == 3) {
						break loop;
					}
					System.out.print(i + "+" + j + "+" + k + "=" + i + j + k
							+ "\t");
				}
				System.out.println("\t\t");
			}
			System.out.println();
		}
	}

结果

level0:0+0+0=000 0+0+1=001 0+0+2=002 0+0+3=003 0+0+4=004

level0:0+1+0=010 0+1+1=011 0+1+2=012 0+1+3=013 0+1+4=014

level0:0+2+0=020 0+2+1=021 0+2+2=022 0+2+3=023 0+2+4=024

level0:0+3+0=030 0+3+1=031 0+3+2=032 0+3+3=033 0+3+4=034

level0:0+4+0=040 0+4+1=041 0+4+2=042 0+4+3=043 0+4+4=044

level1:1+0+0=100 1+0+1=101 1+0+2=102 1+0+3=103 1+0+4=104

level1:1+1+0=110 1+1+1=111 1+1+2=112 1+1+3=113 1+1+4=114

level1:1+2+0=120 1+2+1=121 1+2+2=122



continue

continue;结束本层的本次循环。

eg1:

public static void continueTest1() {
		for (int i = 0; i < 10; i++) {
			if (i == 6) {
				continue;
			}
			System.out.print(i + "\t");
		}
	}

结果:

0 1 2 3 4 5 7 8 9

eg2:

public static void continueTest2() {
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (i == 2 && j == 3) {
					continue;
				}
				System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

结果:

0*0=0 0*1=0 0*2=0 0*3=0 0*4=0

1*0=0 1*1=1 1*2=2 1*3=3 1*4=4

2*0=0 2*1=2 2*2=4 2*4=8

3*0=0 3*1=3 3*2=6 3*3=9 3*4=12

4*0=0 4*1=4 4*2=8 4*3=12 4*4=16


continue[flag];结束带有[flag]标记层的本次循环,且终止[flag]层以内的层在[flag]标记层本次循环下的循环。有点绕口,也很难表述清楚,直接看例子吧:

eg1:

public static void continueTest3() {
		loop: for (int i = 0; i < 10; i++) {
			for (int j = 0; j < 10; j++) {
				if (i == 3 && j == 4) {
					continue loop;
				}
				System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

结果

0*0=0 0*1=0 0*2=0 0*3=0 0*4=0 0*5=0 0*6=0 0*7=0 0*8=0 0*9=0

1*0=0 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9

2*0=0 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18

3*0=0 3*1=3 3*2=6 3*3=9 4*0=0 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36

5*0=0 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45

6*0=0 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54

7*0=0 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63

8*0=0 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72

9*0=0 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81


eg2:

public static void continueTest4() {
		loop: for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("level " + i + ":");
				for (int k = 0; k < 5; k++) {
					if (i == 1 && j == 2 && k == 3) {
						continue loop;
					}
					System.out.print(i + "+" + j + "+" + k + "=" + i + j + k
							+ "\t");
				}
				System.out.println("\t\t");
			}
			System.out.println();
		}
	}
结果:

level0:0+0+0=000 0+0+1=001 0+0+2=002 0+0+3=003 0+0+4=004

level0:0+1+0=010 0+1+1=011 0+1+2=012 0+1+3=013 0+1+4=014

level0:0+2+0=020 0+2+1=021 0+2+2=022 0+2+3=023 0+2+4=024

level0:0+3+0=030 0+3+1=031 0+3+2=032 0+3+3=033 0+3+4=034

level0:0+4+0=040 0+4+1=041 0+4+2=042 0+4+3=043 0+4+4=044


level1:1+0+0=100 1+0+1=101 1+0+2=102 1+0+3=103 1+0+4=104

level1:1+1+0=110 1+1+1=111 1+1+2=112 1+1+3=113 1+1+4=114

level1:1+2+0=120 1+2+1=121 1+2+2=122 level2:2+0+0=200 2+0+1=201 2+0+2=202 2+0+3=203 2+0+4=204

level2:2+1+0=210 2+1+1=211 2+1+2=212 2+1+3=213 2+1+4=214

level2:2+2+0=220 2+2+1=221 2+2+2=222 2+2+3=223 2+2+4=224

level2:2+3+0=230 2+3+1=231 2+3+2=232 2+3+3=233 2+3+4=234

level2:2+4+0=240 2+4+1=241 2+4+2=242 2+4+3=243 2+4+4=244


level3:3+0+0=300 3+0+1=301 3+0+2=302 3+0+3=303 3+0+4=304

level3:3+1+0=310 3+1+1=311 3+1+2=312 3+1+3=313 3+1+4=314

level3:3+2+0=320 3+2+1=321 3+2+2=322 3+2+3=323 3+2+4=324

level3:3+3+0=330 3+3+1=331 3+3+2=332 3+3+3=333 3+3+4=334

level3:3+4+0=340 3+4+1=341 3+4+2=342 3+4+3=343 3+4+4=344


level4:4+0+0=400 4+0+1=401 4+0+2=402 4+0+3=403 4+0+4=404

level4:4+1+0=410 4+1+1=411 4+1+2=412 4+1+3=413 4+1+4=414

level4:4+2+0=420 4+2+1=421 4+2+2=422 4+2+3=423 4+2+4=424

level4:4+3+0=430 4+3+1=431 4+3+2=432 4+3+3=433 4+3+4=434

level4:4+4+0=440 4+4+1=441 4+4+2=442 4+4+3=443 4+4+4=444


PS

突然记得我以前用C语言写过类似的程序,并传到了百度库中。后来找来看了一下,发现写的好简单,但当时硬是写了大半天,而且写完之后还特别高兴,觉得这就是我的杰作,并传到了百度文库中……那时是刚上大学,在读大一刚入门的时候写的。程序员就是这样,总是沉醉于自己的作品之中,那怕是很简单,只要是在进步,把自己不会的东西写出来了,就特别高兴,这也是我们不断努力的动力啊!

有几个例子还是挺有意思的,拿出来秀一下:

1输入一批考试分数,用-1作为结束标志,若输入大于100\n则提示重新输入。然后计算最高分、最低分和平均值。

#include
void main()
{
    int mark,n=0,sum=0,max=0,min=100;
    float average;
  for(;;)
    {
        scanf("%d",&mark);                                         //输入学生成绩
        if(mark>100)                          //如果输入的成绩大于100,则重新输入
        {
            printf("Please reinput:\n");
            continue;                                 //结束本次循环,返回for循环
        }
        if(mark==-1)                                     //-1表示输入学生成绩结束
        break;                                         //终止整个循环,跳出循环体
        n++;
        sum=sum+mark;
        if(mark>max)  max=mark;                             //max存放最大的成绩
        if(mark

2计算半径从120时圆的面积,直到面积大于200为止。

#include
#define PI 3.14159265
void main()
{
    int r;
    float s;
    for(r=1;r<=20;r++)
    {
    s=PI*r*r;
    if(s>200) break;
    printf("r=%d,s=%.2f\n",r,s);
    }
}

3:输出50150之间不能被5整除的整数。

#include
void main()
{
   int i;
   for(i=50;i<=150;i++)
   {
    if(i%5==0)
    {
        printf("\n");  //使输出的显示每五个数换一行。
        continue;
    }
    printf("%5d",i);
   }
   printf("\n");
}



你可能感兴趣的:(再探java基础——break和continue的用法)