Uploaded by snowdenrin.it

Array

advertisement
Introduction to Arrays
 Java ႏွင့္ အျခား language မ်ားတြင္ variable တစ္ခုကို type တူညီ
ေသာ multiple items မ်ားႏွင့္အတူ သိမ္းဆည္းရန္ႏွင့္ ကိုင္တြယ္ေျဖ
႐ွင္းရန္ feature တစ္ခုကို ထၫ့္သြင္းေပးထားသည္။ ၎ feature မွာ
array ျဖစ္သည္။
 Array တစ္ခုသည္ type တူညီေသာ data items မ်ားကို အခန္းငယ္
ေလးမ်ားအတြင္းတြင္ သိမ္းဆည္းေပးၿပီး ထိုအခန္းငယ္မ်ားကို slot
နံပါတ္မ်ားျဖင့္ ခြဲျခားထားသည္။
slot number
0
1
2
number:
1
9
7
by Zaw Htet Aung
Array
 Array တစ္ခုဆိုတာဟာ type တူညီတဲ့ variables ေတြကို စုစည္းထား
တဲ့ group တစ္ခုျဖစ္ပါတယ္။
 မည္သၫ့္ Type အမ်ိဳးအစားကို မဆို Arrays အျဖစ္ ဖန္တီးလို႔
ရပါတယ္။dimensions မ်ားလည္း တစ္ခု (ဒါမွမဟုတ္) တစ္ခုထက္မက
ရိွႏိုင္ပါတယ္။
 Array တစ္ခုထဲမွာရိွတဲ့ element ေတြကို index နံပါတ္ နဲ႔ လက္ခံယူပါ
တယ္။
 C/C++ တို႔မွာရိွတဲ့ Array နဲ႔ Java မွာရိွတဲ့ Array တို႔ဟာ အလုပ္လုပ္ပံု
ခ်င္းမတူညီပါ။
by Zaw Htet Aung
One-Dimensional Arrays
 One-Dimensional array တစ္ခုဆိုတာ အေျခခံအားျဖင့္ေတာ့ type
တူညီတဲ့ variables ေတြကို စုစည္းထားတဲ့ list တစ္ခုျဖစ္ပါတယ္။
 one-dimensional array တစ္ခု၏ general form မွာ 
type var-name [ ] ;
 type - type ေနရာတြင္ Array က ပိုင္ဆိုင္ေနေသာ data ေတြ
ရဲ႕ type ကို ေၾကညာေပးရပါမည္။
 ဥပမာ- array name days ႏွင့္ array type int ရိွေသာ Array တစ္ခု
ေၾကညာ မည္ဆိုပါက
int days [ ] ;
by Zaw Htet Aung
One-Dimensional Arrays
 Array တစ္ခုအား ထိုကဲ့သို႔ေၾကညာပါက days သည္ array variable
တစ္ခုျဖစ္သြားပါမည္။သို႔ေသာ္ အမွန္တကယ္ array တစ္ခုျဖစ္လာမွာ
မဟုတ္ေသးပါ။
 Actual array တစ္ခုျဖစ္လာရန္ array variable အား အခန္းမည္မွ်ျဖင့္
ေဆာက္မည္ဆိုသည္ကို ေၾကညာေပးရန္လိုအပ္ပါသည္။ထိုကဲ့သို႔
ေၾကညာရန္ new ဆိုသၫ့္ keywords အား အသံုးျပဳႏိုင္ပါသည္။
array-var = new type [size] ;
 new ဆိုတာ memory ကို ေနရာခ်ေပးတဲ့ sepcial operator
တစ္ခုျဖစ္ပါတယ္။
by Zaw Htet Aung
One-Dimensional Arrays
 int type , size 12 ရိွေသာ Array name month_days ကို
ေၾကညာခ်င္ပါက
int month_days [ ] = new int [12] ;
 Array ၏ size သည္ 1 မွ စတင္ၿပီး Array ၏ index number သည္
0 မွစတင္ပါသည္။
 Array ၏ ပထမဆံုးအခန္းကို တန္ဖိုးထၫ့္ သြင္းလိုပါက
months_days [0] = 31;
 Array ၏ ပထမဆံုးအခန္းထဲက တန္ဖိုးကို ျပန္လည္ ရယူလိုပါက
month_days [0]
by Zaw Htet Aung
One-Dimensional Arrays
 Arrays ေတြကို declared လုပ္ၿပီးတာနဲ႔ initialized လုပ္သင့္ပါတယ္။ဒီ
ျဖစ္စဥ္ဟာဆိုရင္ ရိုးရိုး type ေတြကို initialized လုပ္တာနဲ႔ အတူတူပဲ
ျဖစ္ပါတယ္။
 Arrays မ်ား၏ တန္ဖိုးမ်ားကို တစ္ခါတည္း initialized လုပ္လိုပါက
curly braces ႏွစ္ခု ၾကားတြင္ ထၫ့္သြင္းေရးသားရမည္။တန္ဖိုးမ်ားကို
( , ) မ်ားျခား ၍ index တစ္ခုျခင္းစီ၏ တန္ဖိုးမ်ားေနရာတြင္ assign
လုပ္ႏိုင္ပါသည္။
 new keyword အား အသံုးျပဳဖို႔ မလိုအပ္ပါ။
by Zaw Htet Aung
One-Dimensional Arrays
 ဥပမာ - day အသီးသီး ရိွ days မ်ားကို သိမ္းဆည္းလိုပါက
int month_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31};
System.out.println(“ February has “ + month_days[1] +
days.”);
by Zaw Htet Aung
Multidimensional Arrays
 Java တြင္ multidimensional arrays ဆိုသည္မွာ Array တစ္ခုပင္ျဖစ္
သည္။
 multidimensional arrays တြင္ two-dimensional arrays ႏွင့္ threedimensional array တို႔ပါဝင္သည္။
 two-dimensional arrays တစ္ခုကို ေၾကညာလိုပါက
int [ ] [ ] array ;
// for int array
String [ ] [ ] str ;
// for String array
 one-dimensional array ႏွင့္ မတူသည္မွာ square braket တစ္ခု
ပိုလာျခင္းပင္ ျဖစ္သည္။
by Zaw Htet Aung
Two-Dimensional Arrays
class TwoDArray{
public static void main(String args[ ] ) {
int twoD [ ] [ ] = new int [3] [4] ;
int i, j, k = 0;
for(i = 0 ; i< 3 ; i++){
for(j = 0; j <4 ; j++ ){
twoD[i] [j] = k ;
k++;
}
}
by Zaw Htet Aung
Two-Dimensional Arrays
for(i =0 ; i < 3 ; i ++ ) {
for( j = 0; j < 4 ; j++){
System.out.print( towD[ i ] [ j ] + “ “ ) ;
}
System.out.println( ) ;
}
}
}
-----------------------------------------------------------------------------------0123
4567
8 9 10 11
by Zaw Htet Aung
Two-Dimensional Arrays
 int twoD[ ] [ ] = new int [3] [4] ၏အလုပ္လုပ္ပံုမွာ
Right index determines column.
Left index determines row.
[0] [0]
[0] [1]
[0] [2]
[0] [3]
[1] [0]
[1] [1]
[1] [2]
[1] [3]
[2] [0]
[2] [1]
[2] [2]
[2] [3]
by Zaw Htet Aung
Two-Dimensional Arrays
 Two-dimensional Arrays အား ေအာက္ပါအတိုင္းလည္းေၾကညာ
ႏိုင္ပါသည္။
int twoD[
twoD[0]
twoD[1]
twoD[2]
] [ ] = new int [3] [ ];
= new int [4];
= new int [4];
= new int [4];
 အထက္ပါအတိုင္းေၾကညာျခင္းသည္ int twoD[ ] [ ] = new int [3]
[4] ႏွင့္အတူတူပင္ျဖစ္သည္။၎ကဲ့သို႔ေၾကညာျခင္းသည္ second
dimensions ကို manually အေနႏွင့္ ေၾကညာျခင္းျဖစ္သည္။
by Zaw Htet Aung
Two-Dimensional Arrays
 manually အျဖစ္ေၾကညာျခင္းကို ေအာက္ပါအတိုင္း array ကို
ေၾကညာလို သၫ့္အခါ အသံုးျပဳရန္ ထၫ့္သြင္းထား ျခင္းျဖစ္သည္။
class TwoDManual {
public static void main (String args [ ] ) {
int twoD[ ] [ ] = new int [3] [ ] ;
twoD [ 0 ] = new int[ 1 ] ;
twoD [ 1 ] = new int [ 2 ];
twoD [ 2 ] = new int [ 3 ];
int i, j , k = 0;
by Zaw Htet Aung
Two-Dimensional Arrays
;
for ( i = 0; i < 3 ; i ++){
for( j = 0; j < i + 1 ; j++) {
twoD[ i ] [ j ] = k;
k ++ ;
}
}
for( i = 0; i < 3 ; i++){
for(j=0; j < i + 1; j ++ ){
System.out.print(twoD [i] [j ] + “ ” )
}
}
 Output Program
0
12
345
}
Sytem.out.println( );
}
by Zaw Htet Aung
Two-Dimensional Arrays

အထက္ပါ program တြင္ array ၏ အလုပ္လုပ္ေဆာင္ပံုမွာ
[0] [0]
[1] [0]
[1] [1]
[2] [0]
[2] [1]
[2] [2]
 multidiemnsional arrays ကို applications ေတြအမ်ားႀကီးအတြက္
အသံုးျပဳျခင္းသည္ သတ္သီးကတ္ဖဲ့ ႏိုင္သၫ့္အတြက္ မသင့္ေလွ်ာ္ပါ။
by Zaw Htet Aung
Two-Dimensional Arrays
 သို႔ေသာ္လည္း အခ်ိဳ႕ ေနရာမ်ားတြင္ irregular arrays ကို
ထိထိေရာက္ေရာက္ အသံုး ျပဳႏိုင္ ပါသည္။ဥပမာ - အလြန္ႀကီးမား
ေသာ two-dimensional array တစ္ခုတြင္ array ခန္းမ်ားကို တူညီ
ေသာတန္ဖိုးမ်ားျဖင့္မဟုတ္ပဲ က်ိဳးတိုးက်ဲတဲ တည္ေဆာက္လိုပါက
irregular array သည္ perfecr solution ျဖစ္သည္။
 multidimensional arrays မ်ားအား ေအာက္ပါအတိုင္း ရိုးရွင္းစြာ
initialize လုပ္ႏိုင္ပါသည္။
by Zaw Htet Aung
Two-Dimensional Arrays
class Matrix {
public static void main(String args[]) {
double m[ ][ ] = {
{ 0*0, 1*0, 2*0, 3*0 },
{ 0*1, 1*1, 2*1, 3*1 },
{ 0*2, 1*2, 2*2, 3*2 },
{ 0*3, 1*3, 2*3, 3*3 }
};
int i, j;
for(i=0; i<4; i++) {
for(j=0; j<4; j++)
System.out.print(m[i][j] + " ");
System.out.println();
}} }
 Output
0.0 0.0 0.0 0.0
0.0 1.0 2.0 3.0
0.0 2.0 4.0 6.0
0.0 3.0 6.0 9.0
by Zaw Htet Aung
Two-Dimensional Arrays
 အထက္ပါ program အတိုင္း matrix ပံုစံျဖင့္လည္း တည္ေဆာက္ႏိုင္ပါ
သည္။
 Array မ်ားကို initialize လုပ္ရာတြင္ literal တန္ဖိုးမ်ားသာမက
expression မ်ားအသံုးျပဳ၍ လည္း ဖန္တီးႏိုင္ပါသည္။
by Zaw Htet Aung
Three-Dimensional Arrays
 three-dimensional arrays တစ္ခုကို ေၾကညာလိုပါက
int [ ] [ ] [ ]array ;
// for int array
String [ ] [ ] [ ] str ; // for String array
 two-dimensional arrays တြင္ square bracket (၂) ခု ပါ၍ threedimensional arrays တြင္ square bracket (3) ခုပါဝင္သည္။
 Three-Dimensional Arrays တစ္ခုကို တည္ေဆာက္လိုပါက
ေအာက္ပါ အတိုင္းတည္ေဆာက္ႏိုင္သည္။
by Zaw Htet Aung
Three-Dimensional Arrays
class ThreeDMatrix {
public static void main(String args[]) {
int threeD[ ][ ][ ] = new int[3][4][5];
int i, j, k;
for(i=0; i<3; i++){
for(j=0; j<4; j++){
for(k=0; k<5; k++){
threeD[i][j][k] = i * j * k;
}
}
}
by Zaw Htet Aung
Three-Dimensional Arrays
for(i=0; i<3; i++) {
for(j=0; j<4; j++) {
for(k=0; k<5; k++){
System.out.print(threeD[i][j][k] + " ");
}
System.out.println();
}
System.out.println();
}
}
}
by Zaw Htet Aung
Three-Dimensional Arrays
Output
00000
00000
00000
00000
00000
01234
02468
0 3 6 9 12
00000
02468
0 4 8 12 16
0 6 12 18 24
by Zaw Htet Aung
Alternative Array Declaration
Syntax
 Array မ်ားကို ေၾကညာရာတြင္ Square Bracket အား variable ၏ ေရွ႕
ႏွင့္ ေနာက္ (၂) ေနရာလံုးတြင္ ေရးသား၍ရသည္။
type [ ] var-name;
type var-name [ ];
 Array မ်ားဖန္တီးရာတြင္လည္း ေအာက္ပါအတိုင္း ေရးသားႏိုင္သည္။
int [ ] num1, num2, num3 ; // create three arrays
int num1 [ ], num2 [ ], num3 [ ] ; // create three arrays
by Zaw Htet Aung
Download