Java入門系列-09-迴圈結構
這篇文章為你搞懂5個問題
- while 迴圈如何使用
- do-while 迴圈的使用
- for 迴圈的使用
- break、continue 的使用
- 迴圈結構的巢狀使用
生活中有很多事情需要我們重複的去做,比如圍著操場跑10圈,比如寫了個爬蟲需要爬取20個頁面,這些都是迴圈。
while 迴圈
while 迴圈是一個 先判斷後執行 的迴圈,由 迴圈條件 和 迴圈操作 組成。
語法:
while(迴圈條件){ 迴圈操作 }
敲一敲:
public class DemoWhile { public static void main(String[] args) { int i=0;//定義一個變數 while(i<10) {//迴圈條件 System.out.println(i); i++;//更新條件 } } }
迴圈條件為 true 時執行迴圈操作,為 false 時不執行
上面的程式碼中的迴圈條件是i小於10,由於i最開始時為0所以比較結果為true,進入迴圈,在迴圈操作中修改變數的值,使條件不斷更新,防止死迴圈,當i的值為10的時,迴圈條件為 false,這時候迴圈就結束了。
敲一敲:
/** * 計算 1-100的和 * @author Jack * */ public class DemoSum { public static void main(String[] args) { int sum=0;//定義儲存和的變數 int i=1;//要更新的數字 while(i<=100) {//迴圈1-100 sum+=i;//累加 i++;//更新數字 } System.out.println("1-100的和:"+sum); } }
敲一敲:
import java.util.Scanner; /** * 輸入y打招呼,輸入n結束 * @author Jack * */ public class DemoWhileInput { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("輸入y打招呼,輸入n結束"); char choose=input.next().charAt(0); while('y'==choose) {//char型別的比較使用 == System.out.println("hello"); System.out.println("輸入y打招呼,輸入n結束"); choose=input.next().charAt(0); } System.out.println("迴圈結束"); } }
do-while迴圈
do-while迴圈執行的特點是 先執行後判斷 ,先執行 do 程式碼塊中的程式碼,迴圈條件為 true時繼續執行 do 程式碼塊,為 false 時結束迴圈。
語法:
do{ 迴圈操作 }while(迴圈條件);
敲一敲:
public class DemoDoWhileSum { public static void main(String[] args) { int sum=0;//用於儲存求和後的值 int i=1; do { sum+=i; i++; } while (i<=100); System.out.println("1-100的和為:"+sum); } }
上面 while 迴圈中的打招呼的程式碼改用 do-while 更合適,下面的程式碼會先打招呼,然後詢問是否繼續,輸入y將繼續
敲一敲:
import java.util.Scanner; public class DemoDoWhile { public static void main(String[] args) { Scanner input=new Scanner(System.in); char choose=' '; do { System.out.println("hello"); System.out.println("輸入y繼續打招呼,輸入n結束"); choose=input.next().charAt(0); }while(choose=='y'); System.out.println("迴圈結束"); } }
for 迴圈
對於固定次數的迴圈,使用 for 將更加簡潔
語法:
for(引數初始化;條件判斷;更新迴圈變數){ 迴圈操作 }
1.先執行引數初始化
2.然後進行條件判斷,如果為 true 執行第3步,為 false 將結束迴圈
3.執行迴圈操作
4.更新迴圈變數,然後再次進入第2步進行條件判斷
敲一敲:
public class DemoFor { public static void main(String[] args) { //列印1-100的數 for(int i=1;i<=100;i++) { System.out.println(i); } } }
引數初始化和更新變數可以同時操作多個變數,像 i++,j--
這樣用 ,
隔開
import java.util.Scanner; public class DemoAddTable { public static void main(String[] args) { System.out.println("請輸入一個值:"); Scanner input=new Scanner(System.in); int val=input.nextInt(); for(int i=0,j=val;i<=val;i++,j--) { System.out.println(i+" + "+j+"="+(i+j)); } } }
在 for 迴圈中兩個 ;
不能省略
如果省略迴圈條件將造成死迴圈
引數初始化可以省略,但要放在迴圈的上面,保證變數的可用
更新迴圈變數可以省略,但要放在迴圈裡面,保證變數的更新不會導致死迴圈
break 和 continue
break:改變程式控制流程,用於 do-while、while、for、switch,跳出結構執行結構後面的語句。
敲一敲:
import java.util.Scanner; public class DemoBreak { public static void main(String[] args) { Scanner input=new Scanner(System.in); while(true) { System.out.println("是否繼續遊戲?輸入任意繼續,輸入no結束:"); String goon=input.next(); if ("no".equals(goon)) {//字串之間的比較使用 equals break; } } System.out.println("結束"); } }
這裡的迴圈條件為 true,也就是一個死迴圈,但在迴圈過程中如果輸入 no 將執行 break ,那麼這個迴圈也就結束了。
continue:只能用在迴圈中,跳過迴圈體中剩餘的語句而執行下一次迴圈。
敲一敲:
import java.util.Scanner; /** * 統計年齡大於16的人數 * @author Jack * */ public class DemoContinue { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("請輸入學員數量:"); int pnum=input.nextInt();//學員總人數 int num=0;//儲存年齡大於16的人數 for(int i=1;i<=pnum;i++) { System.out.println("請輸入第 "+i+" 位學員的年齡:"); int age=input.nextInt(); if (age<17) { continue;//跳過後面程式碼,繼續下一次迴圈 } num++; } System.out.println("年齡大於16的人數:"+num); } }
迴圈巢狀
巢狀迴圈的特點:外層迴圈執行一次,內層迴圈執行一遍,各種迴圈可以任意巢狀,下面使用 for 迴圈演示列印矩形。
語法:
while(……){ for(……;……;……){ } } do{ while(……){ } }while(……); for(……;……;……){ do{ }while(……); } ……
敲一敲:
import java.util.Scanner; public class DemoRectangle { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("輸入要列印的行數:"); int line=input.nextInt();//行數 System.out.println("輸入要列印的列數:"); int column=input.nextInt(); //外層迴圈控制行數,內層迴圈控制列數 for (int i = 1; i <= line; i++) { for (int j = 1; j <= column; j++) { System.out.print("* ");//不換行列印 } //列印完所有的列後換行 System.out.println(); } } }
敲一敲:
/** * 列印一個三角形 * @author Jack * */ public class DemoDelta { public static void main(String[] args) { for(int i=1;i<=5;i++) {//外層迴圈控制行 for (int j = 1; j <= i; j++) {//內層迴圈控制列的條件 System.out.print("* "); } System.out.println(); } } }
列印一個5行的三角形,外層的迴圈控制行數,所以條件是 i<=5
。列和行的條件是什麼?第一行1個 ,第二行2個 ,第三行3個*,所以條件為 j<=i
。
試一試
1.使用巢狀迴圈列印倒三角形
2.使用巢狀迴圈列印99乘法表
1*1=1 1*2=2 2*2=4 …… 1*8=8 2*8=16 …… 1*9=9 2*9=18 …… 9*9=81
鼓勵你在留言中釋出自己的答案,與其他人一起交流,並在百度上搜索相關問題

掃碼關注"享智同行"回覆"009"獲取答案和解析