while及do-while迴圈
文法如下
while (条件式){
执行内容
}
当条件式为true时,会进入迴圈执行内容。
另外一种do-while文法如下
do{
执行内容
}while (条件式)
不管条件如何,总之先执行一次,之后再看条件决定要不要跑迴圈。
来看看範例
class Sample4_1 { public static void main(String[] args) { //while文 int count = 5; while (count != 5 && count > 0){ System.out.println("while : count = " + count); count--; } //do-while文 count = 5; do { System.out.println("do-while : count = " + count); count--; }while (count != 5 && count > 0); }}
再次提醒,边看文章边练习可以增进学习效率唷。
要执行範例很简单,遵照以下步骤即可:
点选windows的开始,并输入CMD,打开命令提示字元视窗。使用cd指令,移动到範例档所在资料夹。使用javac指令,编译範例的java档案。使用java指令,执行刚刚编译好的class档案。※遇到中文无法编译问题,请使用以下指令
javac -encoding utf-8 Sample4_1.java
※遇到中文显示乱码问题,请使用以下指令
chcp 950
把常用指令存在文字档里面,可以更方便操作。
上述範例的执行结果如下
do-while : count = 5do-while : count = 4do-while : count = 3do-while : count = 2do-while : count = 1
可以发现while迴圈因为条件不符没被执行,然而do-while迴圈因为先执行了一次,后来就符合条件而继续重複执行。
for迴圈
直接看範例吧
class Sample4_2 { public static void main(String[] args) { for (int count = 0; count < 5; count++){ System.out.println("count = " + count); } }}
执行结果
count = 0count = 1count = 2count = 3count = 4
for迴圈的条件式结构如下:
for(变数赋值;判断式;后处理){
处理内容
}
迴圈执行流程如下:
判断式->true->处理内容->后处理->判断式
判断式->false->跳出迴圈
扩张for迴圈
为了方便读取阵列而开发的语法,範例如下:
class Sample4_3 { public static void main(String[] args) { //阵列宣言 char[] array = {'a','b','c','d','e'}; //利用扩张for文逐一读取阵列内容 for (char c : array){ System.out.print(c + " "); } System.out.println(); //改行 //使用一般for文的写法 for (int count = 0 ; count < array.length ; count++){ System.out.print(array[count] + " "); } }}
宣告一个变数(c),用来承接阵列取出来的值,写起来乾净多了。
执行结果
a b c d ea b c d e
扩张for迴圈除了阵列之外,也可以取用ArrayList类的列表。
迴圈控制
以下几种指令可以用来操纵迴圈。
break; //跳出迴圈 or 跳出指定的迴圈。
continue; //略过剩下的处理,由所在迴圈or指定迴圈的开头继续执行。
替迴圈命名并搭配break或continue使用,即可跳出/移动到指定的迴圈。
来看看範例:
class Sample4_4 { public static void main(String[] args) { loop1: //在迴圈前面指定其暱称为loop1 for (int a = 0 ; a < 3 ; a++){ for (int b = 0 ; b < 3 ; b++){ System.out.println("a = " + a + " b = " + b); if(a == 1 && b == 1){ System.out.println("break被执行了。"); break loop1; } } System.out.println("loop1的后段处理。"); } loop2: for (int a = 0 ; a < 3 ; a++){ for (int b = 0 ; b < 3 ; b++){ System.out.println("a = " + a + " b = " + b); if(a == 1 && b == 1){ System.out.println("continue被执行了。"); continue loop2; } } } }}
执行结果
a = 0 b = 0a = 0 b = 1a = 0 b = 2loop1的后段处理。a = 1 b = 0a = 1 b = 1break被执行了。a = 0 b = 0a = 0 b = 1a = 0 b = 2a = 1 b = 0a = 1 b = 1continue被执行了。a = 2 b = 0a = 2 b = 1a = 2 b = 2
可以观察看看break和continue的差异
在break后面指定loop1的话,程序就会直接跳出loop1迴圈。
但如果把break后面的loop1拿掉,只会跳出所在(第二层)迴圈,程式会继续进行loop1的后段处理。
以上是第四章 迴圈的学习心得,接下来第五章会介绍class定义及物件的生成、使用。
参考教材: JAVAプログラマSilver SE8 - 山本 道子