-
- 1.Debug模式
-
- 1.1什麼是Debug模式【了解】
- 1.2Debug模式操作流程【應用】
- 2.基礎練習
-
- 2.1減肥計劃if版本【應用】
-
- 2.1.1案例需求
- 2.1.2代碼實作
- 2.2減肥計劃switch版本【應用】
-
- 2.2.1案例需求
- 2.2.2代碼實作
- 2.3逢七跳過【應用】
-
- 2.3.1案例需求
- 2.3.2代碼實作
- 2.4不死神兔【應用】
-
- 2.4.1案例需求
- 2.4.2代碼實作
- 2.5百錢白雞【應用】
-
- 2.5.1案例需求
- 2.5.2代碼實作
- 2.6數組元素求和【應用】
-
- 2.6.1案例需求
- 2.6.2代碼實作
- 2.7判斷兩個數組是否相同【應用】
-
- 2.7.1案例需求
- 2.7.2代碼實作
- 2.8查找元素在數組中出現的索引位置【應用】
-
- 2.8.1案例需求
- 2.8.2代碼實作
- 2.9數組元素反轉【應用】
-
- 2.9.1案例需求
- 2.9.2代碼實作
- 2.10評委打分【應用】
-
- 2.10.1案例需求
- 2.10.2代碼實作
1.Debug模式
1.1什麼是Debug模式【了解】
是供程式員使用的程式調試工具,它可以用于檢視程式的執行流程,也可以用于追蹤程式執行過程來調試程式。
1.2Debug模式操作流程【應用】
- 如何加斷點
- 選擇要設定斷點的代碼行,在行号的區域後面單擊滑鼠左鍵即可
day06javaDebug模式 - 如何運作加了斷點的程式
- 在代碼區域右鍵Debug執行
day06javaDebug模式 - 看哪裡
- 看Debugger視窗
- 看Console視窗
- 點哪裡
- 點Step Into (F7)這個箭頭,也可以直接按F7
day06javaDebug模式 - 如何删除斷點
- 選擇要删除的斷點,單擊滑鼠左鍵即可
day06javaDebug模式 - 如果是多個斷點,可以每一個再點選一次。也可以一次性全部删除
day06javaDebug模式
2.基礎練習
2.1減肥計劃if版本【應用】
2.1.1案例需求
輸入星期數,顯示今天的減肥活動
周一:跑步
周二:遊泳
周三:慢走
周四:動感單車
周五:拳擊
周六:爬山
周日:好好吃一頓
2.1.2代碼實作
/*
思路:
1:鍵盤錄入一個星期數,用一個變量接收
2:對星期數進行判斷,這裡用 if 語句實作
3:在對應的語句控制中輸出對應的減肥活動
*/
public class Test01 {
public static void main(String[] args) {
//鍵盤錄入一個星期數,用一個變量接收
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個星期數:");
int week = sc.nextInt();
//對星期數進行判斷,這裡用 if 語句實作
if (week < 1 || week > 7) {
System.out.println("你輸入的星期數有誤");
} else if (week == 1) {
System.out.println("跑步");
} else if (week == 2) {
System.out.println("遊泳");
} else if (week == 3) {
System.out.println("慢走");
} else if (week == 4) {
System.out.println("動感單車");
} else if (week == 5) {
System.out.println("拳擊");
} else if (week == 6) {
System.out.println("爬山");
} else {
System.out.println("好好吃一頓");
}
}
}
2.2減肥計劃switch版本【應用】
2.2.1案例需求
輸入星期數,顯示今天的減肥活動
周一:跑步
周二:遊泳
周三:慢走
周四:動感單車
周五:拳擊
周六:爬山
周日:好好吃一頓
2.2.2代碼實作
/*
思路:
1:鍵盤錄入一個星期數,用一個變量接收
2:對星期數進行判斷,這裡用 switch 語句實作
3:在對應的語句控制中輸出對應的減肥活動
導包:
1:手動導包 import java.util.Scanner;
2:快捷鍵導包 Alt+Enter
3:自動導包
*/
public class Test02 {
public static void main(String[] args) {
//鍵盤錄入一個星期數,用一個變量接收
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個星期數:");
int week = sc.nextInt();
//對星期數進行判斷,這裡用 switch 語句實作
switch (week) {
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;
default:
System.out.println("你輸入的星期數有誤");
}
}
}
2.3逢七跳過【應用】
2.3.1案例需求
朋友聚會的時候可能會玩一個遊戲:逢七過。
規則是:從任意一個數字開始報數,當你要報的數字包含7或者是7的倍數時都要說:過。
為了幫助大家更好的玩這個遊戲,這裡我們直接在控制台列印出1-100之間的滿足逢七必過規則的資料。
這樣,大家将來在玩遊戲的時候,就知道哪些資料要說:過。
2.3.2代碼實作
/*
思路:
1:資料在1-100之間,用for循環實作資料的擷取
2:根據規則,用if語句實作資料的判斷:要麼個位是7,要麼十位是7,要麼能夠被7整除
3:在控制台輸出滿足規則的資料
*/
public class Test03 {
public static void main(String[] args) {
//資料在1-100之間,用for循環實作資料的擷取
for(int x=1; x<=100; x++) {
//根據規則,用if語句實作資料的判斷:要麼個位是7,要麼十位是7,要麼能夠被7整除
if(x%10==7 || x/10%10==7 || x%7==0) {
//在控制台輸出滿足規則的資料
System.out.println(x);
}
}
}
}
2.4不死神兔【應用】
2.4.1案例需求
有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,
假如兔子都不死,問第二十個月的兔子對數為多少?
2.4.2代碼實作
/*
思路:
1:為了存儲多個月的兔子對數,定義一個數組,用動态初始化完成數組元素的初始化,長度為20
2:因為第1個月,第2個月兔子的對數是已知的,都是1,是以數組的第1個元素,第2個元素值也都是1
3:用循環實作計算每個月的兔子對數
4:輸出數組中最後一個元素的值,就是第20個月的兔子對數
*/
public class Test04 {
public static void main(String[] args) {
//為了存儲多個月的兔子對數,定義一個數組,用動态初始化完成數組元素的初始化,長度為20
int[] arr = new int[20];
//因為第1個月,第2個月兔子的對數是已知的,都是1,是以數組的第1個元素,第2個元素值也都是1
arr[0] = 1;
arr[1] = 1;
//用循環實作計算每個月的兔子對數
for(int x=2; x<arr.length; x++) {
arr[x] = arr[x-2] + arr[x-1];
}
//輸出數組中最後一個元素的值,就是第20個月的兔子對數
System.out.println("第二十個月兔子的對數是:" + arr[19]);
}
}
2.5百錢白雞【應用】
2.5.1案例需求
我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。
百錢買百雞,問雞翁、雞母、雞雛各幾何?
2.5.2代碼實作
/*
思路:
1:第1層循環,用于表示雞翁的範圍,初始化表達式的變量定義為 x=0,判斷條件是x<=20
2:第2層循環,用于表示雞母的範圍,初始化表達式的變量定義為 y=0,判斷條件是y<=33
3:這個時候,用于表示雞雛的變量 z = 100 – x – y
4:判斷表達式 z%3==0 和表達式 5*x + 3*y + z/3 = 100 是否同時成立,如果成立,輸出對應的 x,y,z 的值,就是對應的雞翁,雞母,雞雛的值
*/
public class Test05 {
public static void main(String[] args) {
//第1層循環,用于表示雞翁的範圍,初始化表達式的變量定義為 x=0,判斷條件是x<=20
for(int x=0; x<=20; x++) {
//第2層循環,用于表示雞母的範圍,初始化表達式的變量定義為 y=0,判斷條件是y<=33
for(int y=0; y<=33; y++) {
//這個時候,用于表示雞雛的變量 z = 100 – x – y
int z = 100 - x - y;
//判斷表達式 z%3==0 和表達式 5*x + 3*y + z/3 = 100 是否同時成立
if(z%3==0 && 5*x+3*y+z/3==100) {
System.out.println(x+","+y+","+z);
}
}
}
}
}
2.6數組元素求和【應用】
2.6.1案例需求
有這樣的一個數組,元素是{68,27,95,88,171,996,51,210}。求出該數組中滿足要求的元素和,
要求是:求和的元素個位和十位都不能是7,并且隻能是偶數
2.6.2代碼實作
/*
思路:
1:定義一個數組,用靜态初始化完成數組元素的初始化
2:定義一個求和變量,初始值是0
3:周遊數組,擷取到數組中的每一個元素
4:判斷該元素是否滿足條件,如果滿足條件就累加
5:輸出求和變量的值
*/
public class Test06 {
public static void main(String[] args) {
//定義一個數組,用靜态初始化完成數組元素的初始化
int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
//定義一個求和變量,初始值是0
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.7判斷兩個數組是否相同【應用】
2.7.1案例需求
定義一個方法,用于比較兩個數組的内容是否相同
2.7.2代碼實作
/*
思路:
1:定義兩個數組,分别使用靜态初始化完成數組元素的初始化
2:定義一個方法,用于比較兩個數組的内容是否相同
3:比較兩個數組的内容是否相同,按照下面的步驟實作就可以了
首先比較數組長度,如果長度不相同,數組内容肯定不相同,傳回false
其次周遊,比較兩個數組中的每一個元素,隻要有元素不相同,傳回false
最後循環周遊結束後,傳回true
4:調用方法,用變量接收
5:輸出結果
*/
public class Test07 {
public static void main(String[] args) {
//定義兩個數組,分别使用靜态初始化完成數組元素的初始化
int[] arr = {11, 22, 33, 44, 55};
//int[] arr2 = {11, 22, 33, 44, 55};
int[] arr2 = {11, 22, 33, 44, 5};
//調用方法,用變量接收
boolean flag = compare(arr,arr2);
//輸出結果
System.out.println(flag);
}
//定義一個方法,用于比較兩個數組的内容是否相同
/*
兩個明确:
傳回值類型:boolean
參數:int[] arr, int[] arr2
*/
public static boolean compare(int[] arr, int[] arr2) {
//首先比較數組長度,如果長度不相同,數組内容肯定不相同,傳回false
if(arr.length != arr2.length) {
return false;
}
//其次周遊,比較兩個數組中的每一個元素,隻要有元素不相同,傳回false
for(int x=0; x<arr.length; x++) {
if(arr[x] != arr2[x]) {
return false;
}
}
//最後循環周遊結束後,傳回true
return true;
}
}
2.8查找元素在數組中出現的索引位置【應用】
2.8.1案例需求
已知一個數組 arr = {19, 28, 37, 46, 50}; 鍵盤錄入一個資料,查找該資料在數組中的索引。
并在控制台輸出找到的索引值。如果沒有查找到,則輸出-1
2.8.2代碼實作
/*
思路:
1:定義一個數組,用靜态初始化完成數組元素的初始化
2:鍵盤錄入要查找的資料,用一個變量接收
3:定義一個索引變量,初始值為-1
4:周遊數組,擷取到數組中的每一個元素
5:拿鍵盤錄入的資料和數組中的每一個元素進行比較,如果值相同,就把該值對應的索引指派給索引變量,并結束循環
6:輸出索引變量
*/
public class Test08 {
public static void main(String[] args) {
//定義一個數組,用靜态初始化完成數組元素的初始化
int[] arr = {19, 28, 37, 46, 50};
//鍵盤錄入要查找的資料,用一個變量接收
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 number
*/
public static int getIndex(int[] arr, int number) {
//定義一個索引變量,初始值為-1
int index = -1;
//周遊數組,擷取到數組中的每一個元素
for(int x=0; x<arr.length; x++) {
//拿鍵盤錄入的資料和數組中的每一個元素進行比較,如果值相同,就把該值對應的索引指派給索引變量,并結束循環
if(arr[x] == number) {
index = x;
break;
}
}
//傳回索引
return index;
}
}
2.9數組元素反轉【應用】
2.9.1案例需求
已知一個數組 arr = {19, 28, 37, 46, 50}; 用程式實作把數組中的元素值交換,
交換後的數組 arr = {50, 46, 37, 28, 19}; 并在控制台輸出交換後的數組元素。
2.9.2代碼實作
/*
思路:
1:定義一個數組,用靜态初始化完成數組元素的初始化
2:循環周遊數組,這一次初始化語句定義兩個索引變量,判斷條件是開始索引小于等于結束索引
3:變量交換
4:周遊數組
*/
public class Test09 {
public static void main(String[] args) {
//定義一個數組,用靜态初始化完成數組元素的初始化
int[] arr = {19, 28, 37, 46, 50};
//調用反轉的方法
reverse(arr);
//周遊數組
printArray(arr);
}
/*
兩個明确:
傳回值類型:void
參數:int[] arr
*/
public static void reverse(int[] arr) {
//循環周遊數組,這一次初始化語句定義兩個索引變量,判斷條件是開始索引小于等于結束索引
for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
//變量交換
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
/*
兩個明确:
傳回值類型:void
參數:int[] 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.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}
2.10評委打分【應用】
2.10.1案例需求
在程式設計競賽中,有6個評委為參賽的選手打分,分數為0-100的整數分。
選手的最後得分為:去掉一個最高分和一個最低分後 的4個評委平均值 (不考慮小數部分)。
2.10.2代碼實作
/*
思路:
1:定義一個數組,用動态初始化完成數組元素的初始化,長度為6
2:鍵盤錄入評委分數
3:由于是6個評委打分,是以,接收評委分數的操作,用循環改進
4:定義方法實作擷取數組中的最高分(數組最大值),調用方法
5:定義方法實作擷取數組中的最低分(數組最小值) ,調用方法
6:定義方法實作擷取數組中的所有元素的和(數組元素求和) ,調用方法
7:按照計算規則進行計算得到平均分
8:輸出平均分
*/
public class Test10 {
public static void main(String[] args) {
//定義一個數組,用動态初始化完成數組元素的初始化,長度為6
int[] arr = new int[6];
//鍵盤錄入評委分數
Scanner sc = new Scanner(System.in);
//由于是6個評委打分,是以,接收評委分數的操作,用循環改進
for(int x=0; x<arr.length; x++) {
System.out.println("請輸入第" + (x + 1) + "個評委的打分:");
arr[x] = sc.nextInt();
}
//printArray(arr);
//定義方法實作擷取數組中的最高分(數組最大值),調用方法
int max = getMax(arr);
//定義方法實作擷取數組中的最低分(數組最小值) ,調用方法
int min = getMin(arr);
//定義方法實作擷取數組中的所有元素的和(數組元素求和) ,調用方法
int sum = getSum(arr);
//按照計算規則進行計算得到平均分
int avg = (sum - max - min) / (arr.length - 2);
//輸出平均分
System.out.println("選手的最終得分是:" + avg);
}
/*
兩個明确:
傳回值類型:int
參數:int[] arr
*/
public static int getSum(int[] arr) {
int sum = 0;
for(int x=0; x<arr.length; x++) {
sum += arr[x];
}
return sum;
}
/*
兩個明确:
傳回值類型:int
參數:int[] arr
*/
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;
}
/*
兩個明确:
傳回值類型:int
參數:int[] arr
*/
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;
}
//周遊數組
public static void printArray(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
}