java基礎-day6

第06天 java基礎語法java

今日內容介紹編程

u Eclipse斷點調試數組

u 基礎語法的練習測試

第1章   Eclipse斷點調試

1.1      Eclipse斷點調試概述

  Eclipse的斷點調試能夠查看程序的執行流程和解決程序中的bug加密

1.2      Eclipse斷點調試經常使用操做:

       A:什麼是斷點:spa

          就是一個標記,從哪裏開始。debug

   B:如何設置斷點:調試

          你想看哪裏的程序,你就在那個有效程序的左邊雙擊便可。對象

   C:在哪裏設置斷點:索引

          哪裏不會點哪裏。

          目前:咱們就在每一個方法的第一條有效語句上都加。

   D:如何運行設置斷點後的程序:

          右鍵 -- Debug as -- Java Application

   E:看哪些地方:

          Debug:斷點測試的地方

                 在這個地方,記住F6,或者點擊也能夠。一次看一行的執行過程。

          Variables:查看程序的變量變化

          ForDemo:被查看的源文件

          Console:控制檯

   F:如何去斷點:

          再次雙擊便可

          找到Debug視圖,Variables界面,找到Breakpoints,並點擊,而後看到全部的斷點,最後點擊那個雙叉。

1.2.1    案例代碼一:

package com.itheima;

 

/*

 * 斷點調試:

 *      A:查看程序的執行流程

 *      B:調試程序

 *

 * 斷點:

 *      其實就是一個標記

 *

 * 在哪裏加呢?

 *      想加哪裏就加哪裏,通常是加在咱們看不懂的地方

 *

 * 如何加呢?

 *      在代碼區域的最左邊雙擊便可

 *

 * 如何運行加斷點的程序呢?

 *      代碼區域 -- 右鍵 -- Debug as -- Java Application

 *      會彈出一個頁面讓咱們選擇是否進入debug模式,選擇yes。

 *

 * 如何讓程序往下執行呢?

 *      Step Over 執行下一步

 *      F6

 *

 * 看那些區域呢?

 *      代碼區域:看程序的執行步驟

 *      Debug區域:看程序的執行步驟

 *      Variables:看變量的建立,賦值,銷燬等

 *      Console:看程序的輸入和輸出

 *

 * 如何去除斷點:

 *      A:把加斷點的動做再來一遍

 *      B:在debug視圖中,找到Breakpoints,選中斷點,點擊雙x便可

 */

public class DebugDemo {

    public static void main(String[] args) {

        int a = 10;

        int b = 20;

        int c = a + b;

        System.out.println(c);

    }

}

 

 

 

 

1.3      斷點調試練習

1.3.1    案例代碼二:

package com.itheima;

 

/*

 * 需求:看循環的執行流程(1-5求和案例)

 */

public class DebugTest {

    public static void main(String[] args) {

        // 定義求和變量

        int sum = 0;

 

        // 循環獲取每個數據

        for (int x = 1; x <= 5; x++) {

            sum += x;

        }

 

        System.out.println("sum:" + sum);

    }

}

 

 

 

 

1.3.2    案例代碼三:

package com.itheima;

 

import java.util.Scanner;

 

/*

 * 需求:看方法的調用流程

 *

 * 有方法調用的時候,要想看到完整的流程,每一個方法都要加斷點,建議方法進入的第一條有效語句加斷點

 */

public class DebugTest2 {

    public static void main(String[] args) {

        // 建立對象

        Scanner sc = new Scanner(System.in);

 

        // 接收數據

        System.out.println("請輸入第一個數據:");

        int a = sc.nextInt();

 

        System.out.println("請輸入第二個數據:");

        int b = sc.nextInt();

 

        // 調用方法

        int result = sum(a, b);

 

        // 輸出結果

        System.out.println("result:" + result);

    }

 

    // 求和方法

    public static int sum(int a, int b) {

        return a + b;

    }

}

 

1.3.3    案例代碼四:

package com.itheima;

/*

 * 參數是基本數據類型:

 *      形式參數的改變不影響實際參數。

 */

public class DebugTest3 {

    public static void main(String[] args) {

        int a = 10;

        int b = 20;

        System.out.println("a:" + a + ",b:" + b);

        change(a, b);

        System.out.println("a:" + a + ",b:" + b);

 

    }

 

    public static void change(int a, int b) {

        System.out.println("a:" + a + ",b:" + b);

        a = b;

        b = a + b;

        System.out.println("a:" + a + ",b:" + b);

    }

}

 

1.3.4    案例代碼五:

package com.itheima;

 

/*

 * 參數是基本數據類型:

 *      形式參數的改變不影響實際參數。

 */

public class DebugTest3 {

    public static void main(String[] args) {

        int a = 10;

        int b = 20;

        System.out.println("a:" + a + ",b:" + b);

        change(a, b);

        System.out.println("a:" + a + ",b:" + b);

}

    public static void change(int a, int b) {

        System.out.println("a:" + a + ",b:" + b);

        a = b;

        b = a + b;

        System.out.println("a:" + a + ",b:" + b);

}

}

第2章   基礎語法的練習

2.1  循環,if和switch練習

2.1.1    鍵盤錄入月份,輸出對應的季節(if…else或switch實現)

2.1.1.1  案例代碼六:

package com.itheima;

 

import java.util.Scanner;

 

/*

 * 需求:鍵盤錄入一個月份,輸出該月份對應的季節。

 *      一年有四季

 *      3,4,5   春季

 *      6,7,8   夏季

 *      9,10,11 秋季

 *      12,1,2  冬季

 *

 * 分析:

 *      A:鍵盤錄入一個月份,用Scanner實現

 *      B:判斷該月份是幾月,根據月份輸出對應的季節

 *          if

 *          switch

 */

public class Test {

    public static void main(String[] args) {

        // 鍵盤錄入一個月份,用Scanner實現

        Scanner sc = new Scanner(System.in);

 

        // 接收數據

        System.out.println("請輸入一個月份(1-12):");

        int month = sc.nextInt();

 

        // 判斷該月份是幾月,根據月份輸出對應的季節

        /*

        if (month == 1) {

            System.out.println("冬季");

        } else if (month == 2) {

            System.out.println("冬季");

        } else if (month == 3) {

            System.out.println("春季");

        } else if (month == 4) {

            System.out.println("春季");

        } else if (month == 5) {

            System.out.println("春季");

        } else if (month == 6) {

            System.out.println("夏季");

        } else if (month == 7) {

            System.out.println("夏季");

        } else if (month == 8) {

            System.out.println("夏季");

        } else if (month == 9) {

            System.out.println("秋季");

        } else if (month == 10) {

            System.out.println("秋季");

        } else if (month == 11) {

            System.out.println("秋季");

        } else if (month == 12) {

            System.out.println("冬季");

        } else {

            System.out.println("你輸入的月份有誤");

        }

        */

       

        //代碼太長了,能不能簡單一些呢?

        //能,如何簡單一些呢?

        //咱們能夠把相同季節的月份放到一塊兒來判斷

        //(month==3 || month==4 || month==5)

        if(month==1 || month==2 || month==12) {

            System.out.println("冬季");

        }else if(month==3 || month==4 || month==5) {

            System.out.println("春季");

        }else if(month==6 || month==7|| month==8) {

            System.out.println("夏季");

        }else if(month==9 || month==10 || month==11) {

            System.out.println("秋季");

        }else {

            System.out.println("你輸入的月份有誤");

        }

    }

}

2.1.1.2  案例代碼七:

package com.itheima;

 

import java.util.Scanner;

 

/*

 * 需求:鍵盤錄入一個月份,輸出該月份對應的季節。

 *      一年有四季

 *      3,4,5   春季

 *      6,7,8   夏季

 *      9,10,11 秋季

 *      12,1,2  冬季

 *

 * 分析:

 *      A:鍵盤錄入一個月份,用Scanner實現

 *      B:判斷該月份是幾月,根據月份輸出對應的季節

 *          if

 *          switch

 *

 * case穿透。

 */

public class Test2 {

    public static void main(String[] args) {

        // 鍵盤錄入一個月份,用Scanner實現

        Scanner sc = new Scanner(System.in);

 

        // 接收數據

        System.out.println("請輸入月份(1-12):");

        int month = sc.nextInt();

 

        // 用switch語句實現

        /*

        switch (month) {

        case 1:

            System.out.println("冬季");

            break;

        case 2:

            System.out.println("冬季");

            break;

        case 3:

            System.out.println("春季");

            break;

        case 4:

            System.out.println("春季");

            break;

        case 5:

            System.out.println("春季");

            break;

        case 6:

            System.out.println("夏季");

            break;

        case 7:

            System.out.println("夏季");

            break;

        case 8:

            System.out.println("夏季");

            break;

        case 9:

            System.out.println("秋季");

            break;

        case 10:

            System.out.println("秋季");

            break;

        case 11:

            System.out.println("秋季");

            break;

        case 12:

            System.out.println("冬季");

            break;

        default:

            System.out.println("你輸入的月份有誤");

            break;

        }

        */

       

        //case 穿透

        /*

        switch(month) {

        case 1:

            System.out.println("hello");

            //break;

        case 2:

            System.out.println("world");

            break;

        default:

            System.out.println("over");

            break;

        }

        */

       

        //經過case穿透現象改進代碼

        switch(month) {

        case 1:

        case 2:

        case 12:

            System.out.println("冬季");

            break;

        case 3:

        case 4:

        case 5:

            System.out.println("春季");

            break;

        case 6:

        case 7:

        case 8:

            System.out.println("夏季");

            break;

        case 9:

        case 10:

        case 11:

            System.out.println("秋季");

            break;

        default:

                System.out.println("你輸入的月份有誤");

                break;

        }

    }

}

 

2.1.2    打印5位數中全部的迴文數

2.1.2.1  案例代碼八:

package com.itheima;

/*

 * 需求:打印5位數中的全部迴文數。

 *      什麼是迴文數呢?舉例:12321是迴文數,個位與萬位相同,十位與千位相同。

 *

 * 分析:

 *      A:5位數告訴了咱們數據的範圍,用for循環實現

 *      B:獲取每個5位數,而後獲得它的個位,十位,千位,萬位

 *          假設x是一個5位數:

 *              個位:x%10

 *              十位:x/10%10

 *              千位:x/10/10/10%10

 *              萬位:x/10/10/10/10%10

 *      C:把知足條件的數據輸出便可

 */

public class Test3 {

    public static void main(String[] args) {

        //5位數告訴了咱們數據的範圍,用for循環實現

        for(int x=10000; x<100000; x++) {

            //獲取每個5位數,而後獲得它的個位,十位,千位,萬位

            int ge = x%10;

            int shi = x/10%10;

            int qian = x/10/10/10%10;

            int wan = x/10/10/10/10%10;

           

            //把知足條件的數據輸出便可

            if((ge==wan) && (shi==qian)) {

                System.out.println(x);

            }

        }

    }

}

 

2.2  數組練習

2.2.1    不死神兔問題

2.2.1.1  案例代碼九

package com.itheima;

 

/*

 * 需求:

 *      有一對兔子,從出生後第3個月起每月都生一對兔子,小兔子長到第三個月後每月又生一對兔子,

 *      假如兔子都不死,問第二十個月的兔子對數爲多少?

 *

 * 規律:

 *      第一個月:1

 *      第二個月:1

 *      第三個月:2

 *      第四個月:3

 *      第五個月:5

 *      ...

 *

 *      規律:從第三個月開始,每月的兔子對數是前兩個月的兔子對數之和。

 *          第一個月和第二個月的兔子對數是1

 * 分析:

 *      int[] arr = new int[20];

 *

 *      arr[0] = 1;

 *      arr[1] = 1;

 *

 *      arr[2] = arr[0] + arr[1];

 *      arr[3] = arr[1] + arr[2];

 *      arr[4] = arr[2] + arr[3];

 *      ...

 */

public class Test4 {

    public static void main(String[] args) {

        //定義數組

        int[] arr = new int[20];

       

        //初始化第一個月和第二個月的兔子對數c

        arr[0] = 1;

        arr[1] = 1;

       

        for(int x=2; x<arr.length; x++) {

            arr[x] = arr[x-2] + arr[x-1];

        }

       

        System.out.println("第二十個月的時候的兔子對數是:"+arr[19]);

    }

}

2.2.2    求數組中知足要求的元素和

2.2.2.1  案例代碼十:

package com.itheima;

 

/*

 * 需求:

 * (1)定義一個int類型的一維數組,內容爲{171,72,19,16,118,51,210,7,18}

 * (2)求出該數組中知足要求的元素和。

 *      要求:求和的元素的個位和十位不能包含7,而且只能爲偶數。

 *

 * 分析:

 *      A:定義一個int類型的一維數組

 *      B:定義一個求和變量

 *      C:遍歷數組,獲取到數組中的每個元素

 *      D:判斷該元素是否知足以下要求,若是是就累加,不然,不搭理它

 *          x%2==0

 *          x%10 != 7

 *          x/10%10 !=7

 *      E:輸出結果

 */

public class Test5 {

    public static void main(String[] args) {

        //定義一個int類型的一維數組

        int[] arr = {171,72,19,16,118,51,210,7,18};

       

        //定義一個求和變量

        int sum = 0;

       

        //遍歷數組,獲取到數組中的每個元素

        for(int x=0; x<arr.length; x++) {

            if((arr[x]%10 != 7) && (arr[x]/10%10 != 7) && (arr[x]%2 == 0)) {

                sum += arr[x];

            }

        }

       

        System.out.println("sum:"+sum);

    }

}

 

2.2.3    裁判評分

2.2.3.1  案例代碼十一:

package com.itheima;

 

import java.util.Scanner;

 

/*

 * 需求:在編程競賽中,有6個評委爲參賽的選手打分,分數爲0-100的整數分。

 * 選手的最後得分爲:去掉一個最高分和一個最低分後 其他4個選手的平均值。

 * 請寫代碼實現。(不考慮小數部分)

 *

 * 分析:

 *      A:定義一個長度爲6的數組。

 *      B:經過鍵盤錄入的方式給出評委的分數

 *      C:寫方法實現獲取數組中的最大值,最小值

 *      D:寫方法實現數組元素的求和

 *      E:平均分: (和-最高分-最低分)/(arr.length-2)

 *      F:輸出分數便可

 */

public class Test6 {

    public static void main(String[] args) {

        //定義一個長度爲6的數組

        int[] arr = new int[6];

       

        //經過鍵盤錄入的方式給出評委的分數

        Scanner sc = new Scanner(System.in);

        for(int x=0; x<arr.length; x++) {

            // arr[x] = sc.nextInt();

            System.out.println("請給出第"+(x+1)+"個評委的分數(0-100):");

            int number = sc.nextInt();

            arr[x] = number;

        }

       

        //寫方法實現獲取數組中的最大值,最小值

        int max = getMax(arr);

        int min = getMin(arr);

       

        //寫方法實現數組元素的求和

        int sum = sum(arr);

       

        // (和-最高分-最低分)/(arr.length-2)

        int avg = (sum-max-min)/(arr.length-2);

       

        //輸出分數便可

        System.out.println("該選手的最終得分是:"+avg);

    }

   

    //數組元素求和

    public static int sum(int[] arr) {

        int sum = 0;

       

        for(int x=0; x<arr.length; x++) {

            sum += arr[x];

        }

       

        return sum;

    }

   

    //數組中的最小值

    public static int getMin(int[] arr) {

        int min = arr[0];

       

        for(int x=1; x<arr.length; x++) {

            if(arr[x] < min) {

                min = arr[x];

            }

        }

       

        return min;

    }

   

    //數組中的最大值

    public static int getMax(int[] arr) {

        int max = arr[0];

       

        for(int x=1; x<arr.length; x++) {

            if(arr[x] > max) {

                max = arr[x];

            }

        }

       

        return max;

    }

}

2.2.4    數組反轉

2.2.4.1  案例代碼十二:

package com.itheima;

import java.util.Scanner;

 

/*

 * 需求:

 * (1)鍵盤錄入5個int類型的數據存儲數組arr

 * (2)定義方法將arr數組中的內容反轉

 * (3)定義方法對反轉後的數組進行遍歷

 *

 * 分析:

 *      A:定義一個長度爲5的數組

 *      B:經過鍵盤錄入數據給數組中的元素賦值

 *      C:定義方法將arr數組中的內容反轉

 *          什麼是反轉?如何反轉?

 *      D:定義方法遍歷數組

 */

public class Test7 {

    public static void main(String[] args) {

        // 定義一個長度爲5的數組

        int[] arr = new int[5];

 

        // 經過鍵盤錄入數據給數組中的元素賦值

        Scanner sc = new Scanner(System.in);

        for (int x = 0; x < arr.length; x++) {

            System.out.println("請給出第" + (x + 1) + "個元素");

            arr[x] = sc.nextInt();

        }

       

        System.out.println("反轉前的數組元素:");

        printArray(arr);

 

        // 定義方法將arr數組中的內容反轉

        reverse(arr);

       

        System.out.println("反轉後的數組元素:");

        //定義方法遍歷數組

        printArray(arr);

    }

   

    //遍歷數組

    public static void printArray(int[] arr) {

        System.out.print("[");

        for(int x=0;x<arr.length; x++){

            if(x == arr.length-1) {

                System.out.println(arr[x]+"]");

            }else {

                System.out.print(arr[x]+", ");

            }

        }

    }

   

 

    /*

     * 兩個明確: 返回值類型:void 參數列表:int[] arr

     */

    public static void reverse(int[] arr) {

        for(int startIndex=0,endIndex=arr.length-1;startIndex<=endIndex;startIndex++,endIndex--) {

            int temp = arr[startIndex];

            arr[startIndex] = arr[endIndex];

            arr[endIndex] = temp;

        }

    }

}

 

2.2.5    數組基本查找

2.2.5.1  案例代碼十三:

package com.itheima;

import java.util.Scanner;

/*

 *需求:數組元素查找(查找指定元素第一次在數組中出現的索引)

 *(1)給定數組int[] arr = {5,7,3,2,5};

 *(2)要查詢的元素經過鍵盤錄入的方式肯定

 *(3)定義一個查找數組元素第一次出現位置的方法(注,要查找的元素就是鍵盤錄入的數據)

 *

 *分析:

 *      A:給定數組int[] arr = {5,7,3,2,5};

 *      B:要查詢的元素經過鍵盤錄入的方式肯定

 *      C:定義一個查找數組元素第一次出現位置的方法

 *          遍歷數組,獲取到每個元素,進行比較,若是想等,就直接把該處的索引返回。

 *      D:調用方法,輸出結果

 */

public class Test8 {

    public static void main(String[] args) {

        // 給定數組int[] arr = {5,7,3,2,5};

        int[] arr = { 5, 7, 3, 2, 5 };

 

        //要查詢的元素經過鍵盤錄入的方式肯定

        Scanner sc = new Scanner(System.in);

       

        System.out.println("請輸入要查找的元素:");

        int number = sc.nextInt();

       

        //定義一個查找數組元素第一次出現位置的方法

        //調用方法

        int index =getIndex(arr, number);

        System.out.println("index:"+index);

    }

   

   

    /*

     * 兩個明確:

     *      返回值類型:int

     *      參數列表:int[] arr,int value

     */

    public static int getIndex(int[] arr,int value) {

        //遍歷數組,獲取到每個元素,進行比較,若是想等,就直接把該處的索引返回。

        /*

        for(int x=0; x<arr.length; x++) {

            if(arr[x] == value) {

                return x;

            }

        }

       

        return -1;

        */

       

       

        int index = -1;

       

        for(int x=0; x<arr.length; x++) {

            if(arr[x] == value) {

                index = x;

                break;

            }

        }

       

        return index;

    }

}

 

2.2.6    數據加密

2.2.6.1  案例代碼十四:

package com.itheima;

 

import java.util.Scanner;

 

/*

 * 需求:鍵盤錄入數據,要求數據是四位的整數,現須要對數據進行加密,加密規則以下:

 * 每位數字都加上5,而後除以10的餘數代替該數字,

 * 再將第一位和第四位交換,第二位和第三位交換,

 * 請把加密後的數據輸出到控制檯

 *

 * 分析:

 *      A:鍵盤錄入一個四位數

 *      B:對數據進行加密

 *          舉例:

 *              4567

 *              把這個四位數分紅個,十,百,千存儲到數組中

 *              int[] arr = {4,5,6,7};

 *              每位數字都加上5:

 *                  arr[x] += 5;    {9,10,11,12}

 *              而後除以10的餘數代替該數字:

 *                  arr[x] %= 10;   {9,0,1,2}

 *               再將第一位和第四位交換,第二位和第三位交換:

 *                  {9,0,1,2}       {2,1,0,9}

 *      C:輸出加密後的數據

 */

public class Test9 {

    public static void main(String[] args) {

        //鍵盤錄入一個四位數

        Scanner sc = new Scanner(System.in);

       

        //接收數據

        System.out.println("請輸入一個四位數:");

        int number = sc.nextInt();

       

        //分別獲得該數據的每個位上的數據

        int ge = number%10;

        int shi = number/10%10;

        int bai = number/10/10%10;

        int qian = number/10/10/10%10;

       

        //定義一個數組

        int[] arr = new int[4];

        arr[0] = qian;

        arr[1] = bai;

        arr[2] = shi;

        arr[3] = ge;

       

        //加密規則

        //每位數字都加上5,而後除以10的餘數代替該數字

        for(int x=0; x<arr.length; x++) {

            arr[x] += 5;

            arr[x] %= 10;

        }

       

        //再將第一位和第四位交換,第二位和第三位交換

        int temp = arr[0];

        arr[0] = arr[3];

        arr[3] = temp;

       

        int temp2 = arr[1];

        arr[1] = arr[2];

        arr[2] = temp2;

       

        //輸出加密後的數據

        for(int x=0; x<arr.length; x++) {

            System.out.print(arr[x]);

        }

        System.out.println();

    }

}

相關文章
相關標籤/搜索