今日內容介紹java
u Eclipse斷點調試編程
u 基礎語法的練習數組
第1章 Eclipse斷點調試測試
1.1 Eclipse斷點調試概述加密
Eclipse的斷點調試能夠查看程序的執行流程和解決程序中的bugdebug
1.2 Eclipse斷點調試經常使用操做:3d
A:什麼是斷點:調試
就是一個標記,從哪裏開始。對象
B:如何設置斷點:blog
你想看哪裏的程序,你就在那個有效程序的左邊雙擊便可。
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 案例代碼五:
/*
* 若是參數是引用數據類型:
* 形式參數的改變直接影響實際參數
*/
public class DebugTest4 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
change(arr);
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++)
{
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
}
第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();
}
}