1. 程式人生 > 其它 >2022/4/17 JavaDay09

2022/4/17 JavaDay09

迴圈結構

1. while迴圈

while(){}

  1. 條件正確迴圈一直執行

  2. 大多數情況是會讓迴圈停止下來的,我們需要一個表示式失效的方式來結束迴圈

     package com.sundada.struct;
     ​
     public class WhileDemo01 {
         public static void main(String[] args) {
             //輸出1~100
             int i=0;
             while (i<100){
                 i++;
                 System.out.println(i);
             }
         }
     }
 package com.sundada.struct;
 ​
 public class WhileDemo02 {
     public static void main(String[] args) {
         //死迴圈
         while (true){
             //等待客戶端連線
             //定時檢查
             //......
         }
     }
 }
 package com.sundada.struct;
 ​
 public class WhileDemo03 {
     public static void main(String[] args) {
         //計算1一直加到100
         int i=0;
         int sum=0;
         while (i<=100) {
             sum = sum + i;
             i++;
         }
         System.out.println(sum);
     }
 }

2. do...while迴圈

區別:

  1. while先判斷後執行,do while先執行後判斷

  2. do while至少執行一次

 package com.sundada.struct;
 ​
 public class DoWhileDemo02 {
     public static void main(String[] args) {
         int a=0;
         while (a<0){
             System.out.println(a);
         }
         System.out.println("========");
         do {
             System.out.println(a);
         }while (a<0);
 //        ========
 //        0
 ​
     }
 }

3. For 迴圈

 package com.sundada.struct;
 ​
 public class ForDemo01 {
     public static void main(String[] args) {
         int a=1;//初始化條件
         while (a<=100){//條件判斷
             System.out.println(a);//迴圈
             a+=2;//迭代
         }
         System.out.println("while迴圈結束");
         for (int i = 1; i <100 ; i++) {
             System.out.println(i);
 ​
         }
         System.out.println("for迴圈結束");
         /*
         * 可以為空語句
         * */
     }
 }
  1. 計算0~100之間所有奇數和偶數的和

 package com.sundada.struct;
 ​
 public class ForDemo02 {
     public static void main(String[] args) {
         int oddSum=0;
         int evenSum=0;
         for (int i = 0; i < 100; i++) {
             if ( i%2!=0 ){
                 oddSum=oddSum+i;
             }else {
                 evenSum=evenSum+i;
             }
         }
         System.out.println("奇數的和:"+oddSum);
         System.out.println("偶數的和:"+evenSum);
 ​
     }
 }
  1. 用while和for迴圈輸出1~1000之間能被5整除的數,每行輸出三個

 package com.sundada.struct;
 ​
 public class ForDemo03 {
     public static void main(String[] args) {
         //用while和for迴圈輸出1~1000之間能被5整除的數,每行輸出三個
         for (int i = 0; i < 100; i++) {
             if ( i%5==0 ){
                 System.out.print(i+"\t");//這裡使用print,切記
             }
             if ( i%(5*3)==0 ){
                 System.out.print("\n");//==println
             }
         }
         //println輸出會換行
         //print輸出不會換行
     }
 }
  1. 列印九九乘法表

迴圈巢狀迴圈

 package com.sundada.struct;
 ​
 public class ForDemo04 {
     public static void main(String[] args) {
         for (int i = 1; i <= 9; i++) {
             for (int j = 1; j <=i; j++) {
                 System.out.print(j+"*"+i+"="+(j*i)+"\t");
             }
             System.out.println();
 ​
         }
 ​
     }
 }

4. 增強For迴圈

for(){}

 package com.sundada.struct;
 ​
 public class ForDemo05 {
     public static void main(String[] args) {
         int[] numbers={10,20,30,40,50};//定義一個數組
 ​
         for (int i = 0; i < 5; i++) {
             System.out.println(numbers[i]);
         }
         System.out.println("===========");
         //遍歷陣列的元素
         //陣列賦值,結合陣列和集合
         for (int x:numbers){
             System.out.println(x);
         }
     }
 }

5. break,continue,goto

  1. break用於強制終止迴圈

 package com.sundada.struct;
 ​
 public class BreakDemo01 {
     public static void main(String[] args) {
         for (int i = 0; i < 100; i++) {
             System.out.println(i);
             if ( i==30 )break;//僅僅終止這個for迴圈
         }
         System.out.println("123");
     }
 }
  1. continue用於終止某次迴圈,接著執行下一次迴圈

 package com.sundada.struct;
 ​
 public class ContinueDemo {
     public static void main(String[] args) {
         int i=0;
         while (i<100){
             i++;
             if ( i%10==0 ){
                 System.out.println();
                 continue;//能被10整除則換行
             }
             System.out.print(i+"\t");
         }
         
     }
 }
  1. goto關鍵字

java沒有goto,但可以看到他的影子,可能使用label標籤來實現

 package com.sundada.struct;
 ​
 public class LabelDemo {
     public static void main(String[] args) {
         //列印101~150之間所有質數
         int count=0;
         outer:for (int i = 101; i < 150; i++) {
             for (int j = 2; j < i/2; j++) {
                 if ( i%j==0)continue outer;
 ​
             }
             System.out.print(i+" ");
         }
     }
 }

6. 練習

列印三角形

debug左上角那個蟑螂,記得設定斷點

 package com.sundada.struct;
 ​
 public class TestDemo {
     public static void main(String[] args) {
         //列印三角形 5行三角形
         for (int i = 1; i <= 5; i++) {
             for (int j = 5; j >=i ; j--) {
                 System.out.print(" ");
             }
             for (int j = 1; j <=i ; j++) {
                 System.out.print("*");
             }
             for (int j = 1; j <i ; j++) {
                 System.out.print("*");
             }
             System.out.println();
 //     *
 //    ***
 //   *****
 //  *******
 // *********
         }
 ​
     }
 }