1 陣列


1 一維陣列宣告及使用

1-1 一維陣列宣告
//若不設定初始值
type[] ArrayName=new type[length];
type ArrayName[]=new type[length];
------------------------------------
ex. int[] score=new int[5];
    int score[]=new int[5];

//若設定初始值
type[] ArrayName={value1,value2,value3};
ex. double[] weight={1.2,1.3,2.5};

即使不設定初始值,陣列在被宣告時,還是會擁有初值

型態 初值
int 0
long 0L
float 0.0f
double 0.0
boolean false
Object null
1-2 一維陣列使用
ArrayName[0]=value;
ArrayName[1]=value;
ArrayName[2]=value;

需特別注意的是,陣列的索引值由0開始

使用迴圈時要特別注意,會不會使用超過陣列的索引範圍

1-3 length (迴圈時常使用)
ArrayName.length => 可以算出陣列的長度
//PURPOSE:找出所有分數中,最高和最低的分數
int[] score={99,87,86,58,79};
int max=score[0];
int min=score[0];
for(int i=0;i<score.length;i++){
    if(score[i]>max){
        max=score[i];
    }
    if(score[i]<min){
        min=score[i];
    }
}
System.out.println("最高分數="+max+"\n最低分數="+min);
-------------------------------------------
最高分數=99
最低分數=58

可以思考看看為什麼max和min的初始值是設成那樣?

1-4 foreach迴圈

為array專屬打造的迴圈,迴圈跑第一圈時就會進到陣列第一個元素,跑第二圈時進到第二個,以此類推...

for(type ElementName : ArrayName){
    .....
}
//PURPOSE:找出所有分數中,最高和最低的分數
//與上題一樣,但用的方法不同,可以比較看看差異
int[] score={99,87,86,58,79};
int max=0,min=100;
for(int s : score){ //用s來一個個代替陣列裡面的元素
    if(s>max){
        max=s;
    }
    if(s<min){
        min=s;
    }
}
System.out.println("最高分數="+max+"\n最低分數="+min);
-------------------------------------------
最高分數=99
最低分數=58

2 二維陣列宣告及使用(多維陣列以此類推)

2-1 二維陣列宣告及使用
//若不設定初始值
type[][] ArrayName=new type[length1][length2];
ex. int[][] score=new int[3][5];

//若設定初始值
typetype[][] ArrayName={{value1,value2},{value3,value4}};
ex. int[][] score={{98,59},{63,87,92}};
//設定初始值不一定每個都要填
//PURPOSE:列印出二維陣列所有的值
int[][] score={{99,87},{89,100,63,74}};
for(int i=0;i<score.length;i++){ 
    for(int j=0;j<score[i].length;j++){
        System.out.print(score[i][j]+" ");
    }
    System.out.println("");
}
---------------------------
99 87 
89 100 63 74

以二維陣列為例,每一列欄數不同的又稱為不規則陣列

外層for迴圈的score.length求得的是有幾列

內層for迴圈的score[i].length求得的是有幾欄

2-2 二維陣列如何使用foreach迴圈
//PURPOSE:列印出二維陣列所有的值
//與上題一樣,但用的方法不同,可以比較看看差異
int[][] score={{99,87},{89,100,63,74}};
for(int[] s_row : score){
    for(int s_column : s_row){
        System.out.print(s_column+" ");
    }
    System.out.println("");
}

外層for迴圈從score[ ][ ]陣列裡面抽出來的每個元素都是一個int[ ]

內層for迴圈從s_row[ ]裡面抽出來的每個元素才是一個int

results matching ""

    No results matching ""