標籤:數組排序 結構 預設值 連續 ble 最大 移動 文法 數組下標
第八章
一、 什麼是數組及其作用?
定義:具有相同資料類型的一個集合
作用:儲存連續的具有相同類型的資料
二、 java中如何聲明和定義數組
l 聲明和定義的文法:
資料類型[ ] 數組名;( int[ ] nums ; )
或 資料類型 數組名[]; ( int nums[ ] ;)
l 為數組分配空間
數組名=new 資料類型[數組的長度]; ( nums=new int[5] ;)
l 聲明數組,同時分配空間
資料類型[]數組名= new 資料類型[數組的長度];
資料類型 數組名[]=new 資料類型[數組的長度];
( int[ ] nums=new int[5] ;) ( int nums[ ]=new int[5] ;)
三、 如何讀取數組中的元素— 通過下標(索引)來擷取
下標(索引)是從0開始,最大下標為 數組長度-1
下標越界:ArrayIndexOutOfBoundsException
int類型的數組,每個元素的預設值為0
String類型的數組,每個元素的預設值為null
1、 擷取單個元素的值
資料類型 變數名=數組名[下標];
2、 迴圈讀取數組中的每個元素
數組的長度:數組名.length 屬性自動計算
for(int i=0;i<數組名.length ;i++){
數組名[i];
}
四、如何給數組中的元素賦值
方式1(賦予數組固定值):
聲明數組,分配空間,並賦值
(數組的長度由值的個數決定)
資料類型 數組名[]=new 資料類型[]{值1,值2…值n};
或
資料類型 []數組名={值1,值2…值n};
說明:[]中括弧可以放在數組名前面或後面
方式2:動態給數組賦值(從鍵盤中輸入)
Scanner input = new Scanner(System.in);
for(int i=0;i<數組名.length ; i++){
String類型的數組名[i]= input.next ();
int類型的數組名[i]= input.nextInt ();
double類型的數組[i]=input.nextDouble();
}
五、數組排序問題
使用Arrays. sort(數組名);
實現對數組中的元素按升序或降序輸出
六、求最大值或最小值
實現思路:將數組中的第1個元素的值,假想成最大(小)值【賦值】;然後數組中的每個元素和假想的這個最大(小)數進行比較,如果數組中的某個元素的值,比最大(小)數要大(小),將該元素的值,儲存到假想的最大(小)值對應的變數中【給假想最值變數賦值】
七、求數組中最值的位置
1、 在迴圈的外面,定義變數k(賦值為0),用於儲存最值的下標
2、 在迴圈中,比較找出最值的同時,給變數k賦值
八、斐波那契數列
1,1,2,3,5,8,13,21,34……求第20個數位值?(使用迴圈)
規律:第i個 + 第(i+1)個 = 第(i+2)個
步驟1:定義數組,數組長度為20
int []nums=new int[20];
步驟2:根據規律,擷取第0個和第1個數的初值
nums[0]=1;
nums[1]=1;
步驟3:通過迴圈,給數組中的所有元素賦值
for ( int i=0;i<nums.length-2;i++){
nums [i+2]=nums[i]+nums[i+1];
}
或
for(int i=2;i<nums.length;i++){
nums[i]=nums[i-2]+nums[i-1];
}
步驟4:輸出nums[19]的值
九、(一、)已知一個數組,如何將一個【新的元素】插入到數組中的指定位置?
實現思路:
1、 定義一個長度為 【已知數組長度+1】的新數組YY
2、 使用第1個迴圈,將已知數組中的每個元素的值,儲存到新數組YY中
3、 使用第2個迴圈,將新數組YY中的元素,從倒數第2個(新數組YY的長度-2)元素開始,到指定的位置,依次向後移動1個位置
4、 直接將【新的元素】賦值給新數組YY中的指定元素(下標為指定位置)即可
5、 使用第3個迴圈,輸出新數組YY的值
(二、)已知1個按升序或降序排列的數組,向該數組中,插入一個新的值,插入成功後,數組仍然按照升序或降序排列?
1、 設定插入位置變數index的初始值為:數組長度-1;
2、 使用第1個迴圈,讓插入的數值和數組中的每個元素進行比較,如果插入的數值比數組中某個元素的值要大或小,把該元素的下標的值, 賦予插入位置變數index,同時終止迴圈
3、 使用第2個迴圈,移動位置,從【數組長度-2】到【插入位置變數index】
4、 將插入的值,儲存到數組下標為index的位置
5、 使用第3個迴圈,輸出數組所有元素的值,同時輸出新值插入的位置
--------------------------------------------------------------------------------
[dream1]類型為int、char
[dream2]case 結構可以有多個
[dream3]程式跳出switch結構
[dream4]常量的值不能相同
[dream5]和if結構中的else作用相同
Java(第八章)