1. 程式人生 > 其它 >增強for迴圈和Debug(排錯)

增強for迴圈和Debug(排錯)

增強For迴圈、break和continue、列印三角形及Debug


1.增強for迴圈:

  • 增強for迴圈這裡我們先只是見一面,做個瞭解,之後陣列會重點使用。
  • java5引入了一種, 主要用於遍歷陣列或集合的增強型for迴圈

  • 基本語法:

          for(宣告語句:表示式  ){              
              //程式碼句子
          }
    
  • 關於增強for迴圈有以下幾點說明

  • 1. 宣告語句:宣告新的區域性變數,該變數的型別必須和陣列元素的型別匹配。其作用域限定在迴圈語句塊,其值與此時陣列元素的值相等
  • 2. 表示式:表示式是要訪問的陣列名,或者是返回值為陣列的方法。

1.1 增強for迴圈演示:

package struct;

public class ForDemo06 {
    public static void main(String[] args) {
        int[] numbs={10,20,30,40,50};//定義了一個數組

        for (int i = 0; i < 5; i++) {
            System.out.println(numbs[i]);

        }
        System.out.println("======================");



        //遍歷陣列的元素
        for (int j :numbs) {   //把numbs陣列中每一項的值迴圈賦值給j
            System.out.println("j = " + j);

        }

    }
}


執行結果

10
20
30
40
50
======================
j = 10
j = 20
j = 30
j = 40
j = 50


——————————————————————————————————————————————————————————————————————————

2.break與continue

  • break在任何迴圈語句的主體部分,均可用break控制迴圈的流程。 break用於強行退出迴圈,不執行迴圈中剩餘的語句。 (break語句也在switch語句中使用)
  • continue語句用在迴圈語句體中, 用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定

  • break: 打破,強行終止 continue: 繼續存在;(停頓後)繼續,再開始;


2.1 break程式碼演示:

package struct;

public class BreakDemo01 {
    public static void main(String[] args) {
        //break在任何迴圈語句的主體部分,均可用break控制迴圈的流程,break用於強行退出迴圈,不執行迴圈中剩餘的語句。
        int i=0;
        while (i<100){
            i++;
            //System.out.println("i = " + i);
            if(i==20){
                break;//當i等於20 時迴圈碰到break 直接強行終止掉迴圈
            }
            System.out.println("i = " + i);
        }

        System.out.println("12345");

    }

}

執行結果

i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
i = 11
i = 12
i = 13
i = 14
i = 15
i = 16
i = 17
i = 18
i = 19
12345


2.2 continue程式碼演示

package struct;

public class ContinueDemo01 {
    public static void main(String[] args) {
//        continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定
        int i=0;
        while (i<20){
            i++;

            if(i%2==0){
                System.out.println();
                continue;//當i為偶數時,由於continue 迴圈到此直接回到了i++ 處並沒有執行下面的列印語句直接就跳過了

            }
            System.out.println(i);
        }
    }
}

執行結果

1

3

5

7

9

11

13

15

17

19



3.關於goto關鍵字

  • goto關鍵字很早就在程式設計語言中出現,儘管goto仍是java的一個保留字,但並未在語言中得到正式使用;java沒有goto。然而,在break和continue這兩個關鍵字的身上,我們仍然能看出一些goto的影子---帶標籤的break和continue。
  • “標籤”是指後面跟一個冒號的識別符號,例如: label:

  • 對於java來說唯一用到標籤的地方是在迴圈語句之前。而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於break和continue關鍵字通常只中斷當前迴圈,但若隨同標籤使用,它們就會中斷到存在標籤的地方

3.1 continue中標籤迴圈演示:

package struct;

public class LableDemo {
    public static void main(String[] args) {
        //列印101~150之間的所有質數
       // 質數是指在大於1的自然數中,除了1和它本事以外不再有其他因數的自然數。
        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 = " + i+" ");
        }

    }

}

執行結果

i = 101 i = 103 i = 107 i = 109 i = 113 i = 127 i = 131 i = 137 i = 139 i = 149 


4.列印三角形和Debug

4.1 for迴圈列印三角形演示:

package struct;

public class TestDemo {
    public static void main(String[] args) {
  // 使用for迴圈   列印三角形

        //首先,列印三角形可以是在長方形中取出一個三角形
        //先列印一個倒立的三角形。讓其成為空白部分
        //再列印一個對摺後的三角形,也就是九九乘法表對摺後
        //最後再列印另外半個三角形,也就是九九乘法表
        for (int i = 1; i <= 9; i++) {
            for (int j = 9; 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();


        }

    }
}

執行結果

         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************

4.2 斷點除錯Debug

4.21 Debug簡介

  • 什麼是程式Debug?

    • Debug,是程式開發人員必會的一項除錯程式的技能,Debug模式是供程式設計師使用的程式除錯工具,它可以用於檢視程式的執行流程,也可以用於追蹤程式執行過程來除錯程式。
  • Debug能幫助我們做什麼?

    • 追蹤程式碼的執行流程
    • 程式執行異常定位和除錯
    • 線上問題追蹤
  • Debug對於程式學習者的意義?

    • 通過除錯能夠更好的檢視程式的執行流程
    • 複雜的程式邏輯,通過別人的口述講解,很難理解清楚,這個時候藉助除錯能夠很好的幫助我們理解程式
    • 定位問題,提高自我解決問題的能力

————————————————————————————————————————————————————————————————————————————

4.22 IDEA中的Debug步驟

  • 1. 設定斷點

  • 2. 除錯程式(8個按鈕)

  • 3. 觀察變數

    • 檢視變數有三種方式:
      • 程式區檢視變數
      • Debugger的Variables(變數)中檢視變數
      • 滑鼠懸停到變數名上會彈出當前變數的值
  • 4. 檢視輸出:在Console(儀表板)視窗看程式執行過程中的結果展示

4.23 步過除錯的使用

  • 步過除錯(Step Over :跨過 )
    • 步過除錯按鈕:F8
  • 作用
    • 步過,一行一行的往下走,如果這一行上有方法不會進入方法。
    • 常用於除錯過程中不想進入呼叫的方法體的情況

4.24 步入除錯的使用

  • 步入除錯(Step Into :踏入 )
    • 步過除錯按鈕:F7
  • 作用
    • 步入,一行一行的往下走,如果這一行上有方法則進入方法內部。
    • 一般用於進入自定義方法內,不會進入官方類庫的方法

4.25 強制步入除錯的使用

  • 步入除錯(Force Step Into:強行進入)
    • 步過除錯按鈕:Alt+Shift+F7
  • 作用
    • 進入官方類庫方法
    • 幫助我們學習和檢視JDK原始碼

4.26 步出除錯的使用

  • 步入除錯(Step Out :退出 )
    • 步過除錯按鈕:Shift+F8
  • 作用
    • 從方法內退出到方法呼叫處。
    • 除錯的時候,有時候會跳入到自己不想檢視的方法體,這個時候使用步出

4.27 回退斷點除錯的使用

  • 作用
    • 回退到當前方法的呼叫處
    • 當想重新檢視該方法體的執行過程時,不用重新啟動Debug,可以使用回退斷點方式

4.28 執行到游標處

  • 執行到游標處(Run to Cursor :執行至游標處 )

    • 步過除錯按鈕:Alt+F9
  • 作用

    • 使程式執行到游標處,而無需設定斷點

5. 更多參考

狂神說Java
程式除錯入門教程