數(shù)組作為方法返回值
數(shù)組作為方法返回值使用 : 方法定義上,在返回值類型這個(gè)位置上,寫數(shù)組
方法的調(diào)用者,在調(diào)用方法后,接收方法的返回值,可以使用數(shù)組來接收
返回的數(shù)組也是內(nèi)存的地址
public static void main(String[] args) {
//調(diào)用方法getArray(),接收方法的返回值
//方法返回的是數(shù)組,數(shù)組接收 , 收到的也是地址
int[] array = getArray();
System.out.println(array[0]);
}
/*
* 定義方法,返回值類型 是數(shù)組
* 方法體中 : 必須有return語句返回,返回?cái)?shù)組
*/
public static int[] getArray() {
//創(chuàng)建數(shù)組
int[] arr = {1,2,3,4,5,6};
//返回定義好的數(shù)組
return arr; // return 返回?cái)?shù)組,返回的是數(shù)組內(nèi)存中地址
}
數(shù)組的對(duì)稱性判斷
數(shù)組的對(duì)稱判斷 : 在一個(gè)數(shù)組中, 最遠(yuǎn)端的元素是相等的,依次類推
int[] arr = {1,2,3,4,5,4,3,2,1}
需求 : 已知數(shù)組,判斷是否是對(duì)稱
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,4,3,2,1};
//調(diào)用方法,判斷數(shù)組是否對(duì)稱
//傳遞數(shù)組,獲取方法的返回值
boolean bool = isDuiChen(arr);
System.out.println(bool);
}
/*
* 需求 : 已知數(shù)組,判斷是否是對(duì)稱
* 方法返回值類型 : 運(yùn)行后的結(jié)果數(shù)據(jù)類型 布爾
* 方法的參數(shù)列表 : 參數(shù)是方法中的未知數(shù)據(jù), 數(shù)組
*/
public static boolean isDuiChen(int[] arr) {
//方法體中,實(shí)現(xiàn)判斷數(shù)組的對(duì)稱性
//兩個(gè)變量,保存數(shù)組的最小索引和最大索引 (小索引++ , 大索引--)
for(int min = 0 , max = arr.length - 1; min <= max ; min++,max--) {
//比較數(shù)組最遠(yuǎn)端的元素,是否相等
if(arr[min] != arr[max]) {
//判定數(shù)組不對(duì)稱,其他計(jì)算不在需要
return false;
}
}
//將數(shù)組的所有元素全部比較完成,for循環(huán)結(jié)束
//沒有不相等的,就是對(duì)稱數(shù)組,返回true
return true;
}
字符出現(xiàn)的次數(shù)統(tǒng)計(jì)
需求 : 鍵盤輸入字符串,可以任意
? 計(jì)算出,這個(gè)字符串中,大寫字母有幾個(gè),小寫字母有幾個(gè),數(shù)字有幾個(gè),其他字符有幾個(gè)
例子 : 鍵盤數(shù)組字符串 abcWA12WE!@
? 程序的輸出結(jié)果 : 小寫字母3個(gè), 大寫字母4個(gè),數(shù)字2個(gè),其他字符2個(gè)
分析 :
-
輸入的數(shù)據(jù)是字符串, 需要操作字符串中每個(gè)字符, 字符串轉(zhuǎn)成數(shù)組
- 未來的方法 : 字符串方法 toCharArray() 字符串轉(zhuǎn)成 字符數(shù)組 char[]
-
對(duì)字符數(shù)組遍歷
- 遍歷的過程中,判斷每個(gè)字符屬于什么??
- 判斷字符是大寫字母 ASCII 65-90
- 判斷字符是小寫字母 ASCII 97-122
- 判斷字符是數(shù)字 ASCII 48-57
-
創(chuàng)建4個(gè)變量,作用計(jì)數(shù)器
- 字符滿足條件, 計(jì)數(shù)器++
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); //調(diào)用統(tǒng)計(jì)字符出現(xiàn)次數(shù)的方法 printCount(str); } /* * 定義方法,實(shí)現(xiàn)字符出現(xiàn)次數(shù)的統(tǒng)計(jì) * 方法返回值 : 沒有返回值,直接輸出結(jié)果 void * 方法參數(shù) : 方法計(jì)算的未知數(shù), 字符串 * 實(shí)現(xiàn)步驟 : * 1 : 接收到字符串,轉(zhuǎn)成char[]數(shù)組 * 2 : 創(chuàng)建4個(gè)變量,計(jì)數(shù)器使用 int * 3 : 遍歷char[]數(shù)組,取出每個(gè)元素 * 4 : ASCII碼判斷,決定是否是大寫,小寫,數(shù)字,或者是其他字符 * 5 : 滿足條件,計(jì)數(shù)器++ * 6 : 所有的字符數(shù)組遍歷完成,計(jì)算結(jié)束了,輸出計(jì)算結(jié)果 * */ public static void printCount(String str) { // 1 : 接收到字符串,轉(zhuǎn)成char[]數(shù)組 char[] ch = str.toCharArray(); //2 : 創(chuàng)建4個(gè)變量,計(jì)數(shù)器使用 int int upperCount = 0; //大寫字母計(jì)數(shù)器 int lowerCount = 0; //小寫字母計(jì)數(shù)器 int digitCount = 0; //數(shù)字計(jì)數(shù)器 int otherCount = 0; //其他字符計(jì)數(shù)器 // 3 : 遍歷char[]數(shù)組,取出每個(gè)元素 for(int i = 0 ; i < ch.length ; i++) { //取出數(shù)組的元素,賦變量 char c = ch[i]; //判斷c是否是大寫字母 if(c >= 'A' && c <= 'Z') { upperCount++; } //判斷c是否是小寫字母 else if(c >= 'a' && c <= 'z') { lowerCount++; } //判斷是否是數(shù)字 else if(c >= '0' && c <= '9') { digitCount++; }else { //其他字符 otherCount++; } } // 6 : 所有的字符數(shù)組遍歷完成,計(jì)算結(jié)束了,輸出計(jì)算結(jié)果 System.out.println("大寫字母出現(xiàn): "+ upperCount +"次"); System.out.println("小寫字母出現(xiàn): "+ lowerCount +"次"); System.out.println("數(shù)字出現(xiàn): "+ digitCount +"次"); System.out.println("其他字符出現(xiàn): "+ otherCount +"次"); }
冒泡排序
數(shù)組排序 : 默認(rèn)情況都是升序,從小到大排列
數(shù)組 : 原始形態(tài) {5,2,1,4,6} == 排序 {1,2,4,5,6}
排序 : 數(shù)組元素的比較,位置交換
冒泡排序 : 數(shù)組的相鄰元素,比較換位
public static void main(String[] args) {
int[] arr = {2,6,5,-1,-2,3,1};
//調(diào)用排序方法
bubbleSort(arr); //傳遞數(shù)組的地址
}
/*
* 定義方法實(shí)現(xiàn)數(shù)組冒泡排序
* 方法有返回值嗎 : 返回?cái)?shù)組
* 方法有參數(shù)嗎 : 要排序哪個(gè)數(shù)組
*/
public static void bubbleSort(int[] arr) { // arr接收到的也是地址
//外循環(huán)控制行數(shù)
for(int i = 0 ; i < arr.length - 1; i++) {
//內(nèi)循環(huán),控制比較換位的次數(shù), 一次遞減
// i變量每次++ length-i 越來越小
//j=0 j<3 j++ j變量最大到2
for(int j = 0 ; j < arr.length - i - 1;j++) {
//相鄰元素比較換位
if(arr[j] > arr[j+1]) {
int temp = arr[j]; //保存j索引元素
arr[j] = arr[j+1] ; //j+1索引元素,賦值到j(luò)
arr[j+1] = temp; //臨時(shí)變量的值,賦值到j(luò)+1
}
}
}
//排序結(jié)束,遍歷
for(int i = 0 ; i < arr.length;i++) {
System.out.println(arr[i]);
}
}
斐波那契數(shù)列
黃金分割 : 1 1 2 3 5 8 ... 從第三個(gè)數(shù)開始,每個(gè)數(shù)都是前2項(xiàng)的數(shù)字之和
計(jì)算出,第12位是多少
數(shù)組和方法
public static void main(String[] args) {
int[] arr = new int[12];
//數(shù)組元素賦值
arr[0] = 1;
arr[1] = 1;
//從2索引開始遍歷
for(int i = 2; i < arr.length ; i++) {
//數(shù)組元素的賦值
arr[i] = arr[i-1] + arr[i-2];
}
//數(shù)組遍歷
for(int i = 0 ; i < arr.length ;i++) {
System.out.println(arr[i]);
}
}
裁判評(píng)分
實(shí)現(xiàn)裁判評(píng)分功能 : 裁判數(shù)量是固定 (6個(gè)裁判)
每個(gè)裁判為運(yùn)動(dòng)員評(píng)分, 去掉一個(gè)最高分,去掉一個(gè)最低分, 剩余的4個(gè)分?jǐn)?shù)求平均值
實(shí)現(xiàn)技術(shù)數(shù)組和方法.
6個(gè)裁判,分?jǐn)?shù)鍵盤輸入, 存儲(chǔ)在數(shù)組里面,在輸入的過程中,實(shí)現(xiàn)對(duì)數(shù)組元素的賦值
去掉一個(gè)最高分 : 計(jì)算出哪個(gè)是最高的 最大值獲取
所有的分?jǐn)?shù),求和 - 最大值 - 最小值
public static void main(String[] args) {
//創(chuàng)建長度為6的數(shù)組
int[] array = new int[6];
//調(diào)用保存數(shù)據(jù)的方法
saveData(array);
//調(diào)用方法,實(shí)現(xiàn)遍歷
printArray(array);
//調(diào)用方法,獲取最大值
int max = getMax(array);
System.out.println("最大值 : "+max);
//調(diào)用方法,獲取最大值
int min = getMin(array);
System.out.println("最大值 : "+min);
//調(diào)用獲取平均成績的方法
int avg =getAvg(array, max, min);
System.out.println("最后的成績是 :" + avg);
}
/*
* 計(jì)算出,去掉最大,和最小值后的平均值
* 方法是否有返回值 : int
* 方法是否有參數(shù) : 數(shù)組, 最大值,最小值
*/
public static int getAvg(int[] array,int max,int min) {
//數(shù)組數(shù)據(jù)的求和,定義變量,保存和值
int sum = 0;
for(int i = 0 ; i < array.length;i++) {
sum = sum + array[i];
}
//和值,去掉最大和最小
return (sum - max - min) / (array.length - 2);
}
/*
* 實(shí)現(xiàn)獲取數(shù)組的最小值
* 方法是否有返回值 : int
* 方法是否有參數(shù) : 數(shù)組
*/
public static int getMin(int[] array) {
//定義變量,保存數(shù)組0索引元素
int min = array[0];
for(int i = 0 ; i < array.length ; i++) {
if(array[i] < min) {
min = array[i];
}
}
return min;
}
/*
* 實(shí)現(xiàn)獲取數(shù)組的最大值
* 方法是否有返回值 : int
* 方法是否有參數(shù) : 數(shù)組
*/
public static int getMax(int[] array) {
//定義變量,保存數(shù)組0索引元素
int max = array[0];
for(int i = 0 ; i < array.length ; i++) {
if(array[i] > max) {
max = array[i];
}
}
return max;
}
/*
* 定義方法,錄入6個(gè)數(shù)據(jù)
* 分別存儲(chǔ)在數(shù)組中
* 方法是否有返回值 : 無
* 方法是否有參數(shù) : 長度為6的數(shù)組
*/
public static void saveData(int[] array) {
Scanner sc = new Scanner(System.in);
//循環(huán)遍歷數(shù)組
for(int i = 0 ; i < array.length ; i++) {
System.out.println("請輸入第" + (i+1) +"個(gè)成績");
//輸入的整數(shù)評(píng)分,存儲(chǔ)在數(shù)組中
array[i] = sc.nextInt();
}
}
/*
* 定義方法,遍歷數(shù)組
*/
public static void printArray(int[] array) {
for(int i = 0 ; i < array.length ; i++) {
System.out.println(array[i]);
}
}
隨機(jī)數(shù)類
隨機(jī)產(chǎn)生一個(gè)數(shù)字,隨機(jī)數(shù). 偽隨機(jī)數(shù).
計(jì)算機(jī),產(chǎn)生隨機(jī)數(shù),是根據(jù)一個(gè)計(jì)算方法得來的
public static void main(String[] args) {
Random ran = new Random();
//ran.nextInt(100); 產(chǎn)生隨機(jī)數(shù),范圍是0-100 可能是0,不會(huì)到達(dá)100
for(int i = 0 ; i < 20 ;i++) {
int num= ran.nextInt(100);
System.out.println(num);
}
}
Eclipse進(jìn)階
快捷鍵
- Ctrl + 1 意見提示 (工具提出意見) ,程序中出現(xiàn)報(bào)錯(cuò)的時(shí)候,圖標(biāo)是小叉子
- Alt + 箭頭 (上或者下) 移動(dòng)代碼行
- Ctrl + Alt + 箭頭 (上或者下) 復(fù)制并移動(dòng)代碼行
- Ctrl + D 刪除當(dāng)前行
- Alt + Shift + S 自動(dòng)生成代碼
- Ctrl + Shift + F 代碼格式化
- Alt + Shift + M 自動(dòng)抽取方法
- Alt + Shift + R 修改名字
大綱視圖 (outline)
- 展示類的結(jié)構(gòu)
- 綠色的實(shí)心圓 : public權(quán)限方法
- 黃色的實(shí)心圓 : protected權(quán)限方法
- 藍(lán)色的三角形 : 默認(rèn)權(quán)限方法
- 紅色的方塊 : private權(quán)限方法
- 修改名字 : 所有使用到的內(nèi)容,全部發(fā)送改變
Debug調(diào)試模式
程序出現(xiàn)問題找不到,程序不出問題,但是運(yùn)行的結(jié)果和你預(yù)期不一樣
- 在程序的有效行,行號(hào)雙擊,出現(xiàn)斷點(diǎn)
- 當(dāng)程序,執(zhí)行到斷點(diǎn)的時(shí)候,不在執(zhí)行,停止
- 我們自己,可以手動(dòng)控制程序運(yùn)行
- 啟動(dòng)調(diào)試模式
- 程序會(huì)出現(xiàn)綠色背景,這行還沒有被執(zhí)行
- 右側(cè)窗口 Variables變量,看到程序中所有變量的值
- 按鈕 : step over 快捷鍵F6 代碼向下走一行