Java 基礎 程式流程式控制制 (下),java流程
Java 程式流程式控制制 (下)
此篇單獨對迴圈結構的知識點進行整理:
之前講到迴圈結構分為:for迴圈,while迴圈,do...while迴圈三種最基本的迴圈結構;在JDK1.5以後的版本還提供了foreach迴圈,用於進行數組和集合的遍曆。
迴圈語句的四個組成部分:
for迴圈:
for(初始化條件; 迴圈條件; 迭代部分){
迴圈體
}
1 public class TestFor {2 public static void main(String[] args) {3 //基礎for迴圈,講一個語句列印多次4 for(int i=0; i<7; i++){5 System.out.println("Hello World!! 第"+i+"次列印");6 }7 }8 }
練習:列印1-100中的所有偶數
1 public class TestFor { 2 public void PrintNum(){ 3 for(int i=1; i<=100; i++){ 4 if(i%2==0){//對2取餘,若為0則證明是偶數,執行列印語句,反之則繼續迴圈直到滿足偶數條件或者i>0 5 System.out.println("i="+i); 6 } 7 } 8 } 9 public static void main(String[] args) {10 TestFor testFor = new TestFor();11 testFor.PrintNum();12 }13 }
練習:編寫代碼滿足從1迴圈到150並在每一行列印一個值,另外需要在每個3的倍數的行列印“foo”,在每個5的倍數的行列印“biz”,
在每個7的倍數行上列印輸出“baz”
1 public class TestFor { 2 public void FooBizBaz(){ 3 for(int i=1; i<=150; i++){ 4 System.out.print(i+":"); 5 if(i%3 == 0){ 6 System.out.print(" foo"); 7 } 8 if(i%5 == 0){ 9 System.out.print(" biz");10 }11 if(i%7 == 0){12 System.out.print(" baz");13 }14 System.out.println();15 }16 }17 public static void main(String[] args) {18 TestFor testFor = new TestFor();19 testFor.FooBizBaz();20 }21 }
註:一定要注意,這個題裡不能使用else if(){},一旦使用,會無法在同時滿足3、5、7的倍數的行數中同時列印三個欄位,因為一旦有一個滿足判斷條件就不會執行下方的if判斷語句從而直接跳出當前迴圈執行下一次迴圈。
還有很多小的基礎的for迴圈演算法,如列印1-100所有奇數的和、列印出所有的水仙花數(水仙花數可以自己搜尋一下),這些題可以自行練習,有助於加強對for迴圈的理解,這裡就不一一贅述了。
while 迴圈:
初始化條件
while(迴圈條件){
迴圈體
迭代條件
}
樣本:輸出1-100以內的所有偶數
1 public class TestWhile { 2 public void evenNum(){ 3 int i = 1; //初始化條件 4 while(i<=100 ){//迴圈條件 5 6 if(i % 2 == 0){ 7 System.out.println("i="+i); 8 }//迴圈體 9 10 i++;//迭代條件11 }12 }13 14 public static void main(String[] args) {15 TestWhile testWhile = new TestWhile();16 testWhile.evenNum();17 }18 }
註:for迴圈和while迴圈是能夠實現互相轉化的,因為二者擁有同樣的四部分,只是四部分放置的位置不同。
while迴圈的另一種迴圈方式:
do...while 迴圈:
初始化條件
do{
迴圈體
迭代條件
}while(迴圈條件);
由上述結構可以看出,do...while迴圈是先進行一次迴圈在來判斷是否滿足迴圈條件,滿足則進行下一次迴圈,不滿足則停止迴圈。
樣本:列印1-100中的所有偶數
1 public class TestDoWhile { 2 public void evenNum(){ 3 int i = 1; 4 do{ 5 if(i % 2 == 0){ 6 System.out.println("i="+i); 7 } 8 i++; 9 }while(i <= 100);10 }11 public static void main(String[] args) {12 TestDoWhile testDoWhile = new TestDoWhile();13 testDoWhile.evenNum();14 }15 }
do...while和while迴圈的區別:
do...while迴圈中 初始化條件即使不滿足迴圈條件也會直接執行一次迴圈體再進行迴圈條件判斷,所以迴圈體至少被執行一次,而while迴圈是必須滿足迴圈條件才會執行迴圈體。
嵌套迴圈
顧名思義,嵌套迴圈就是再一個迴圈中還能再聲明一個迴圈
幾種嵌套方式:
1.for迴圈中能夠嵌套一個for或多個for;
2.while迴圈中可以嵌套一個或多個while迴圈;
3.for迴圈中可以嵌套一個或多個while迴圈;
4.while迴圈中可以嵌套一個或多個for迴圈;
5.for迴圈中可以嵌套一個或多個for/while迴圈;
6.while迴圈中可以嵌套一個或多個for/while迴圈。
樣本:
For之間嵌套
1 public class TestForFor { 2 /*列印出 ***** 3 * ***** 4 * ***** 5 * ***** 6 * */ 7 public void forQianTao(){ 8 for(int i = 1; i <= 4;i++){ 9 for(int j = 1; j<=5 ;j++){10 System.out.print("*");11 }12 System.out.println();13 }//此為兩層迴圈,i用於控制列印的行數,j用於控制列印的列數14 }15 public static void main(String[] args) {16 TestForFor testForFor = new TestForFor();17 testForFor.forQianTao();18 }19 20 }
其它幾種嵌套迴圈可以參考上面的樣本,結構類似。自己可以進行練習,如通過嵌套迴圈列印九九乘法表、或者列印一個由星號組成的菱形圖案,每個星號之間要有一個空格,這些題可以加強對嵌套迴圈的理解。