SlideShare a Scribd company logo
1 of 20
Download to read offline
ตัวแปรอารเรย
Array
วัตถุประสงค
♦ เพื่อใหมีความรูความเขาใจในการทํางานตัวแปรชุดหรือตัวแปรอารเรย
♦ เพื่อใหมีความรูความเขาใจในการสรางคลาสแบบอารเรยได
♦ เพื่อใหมีความรูความเขาใจในการสงผานคาตัวแปรอารเรยไปยังเมธอดตางๆ
♦ เพื่อสามารถนําแนวคิดตัวแปรอารเรยไปเขียนโปรแกรมประยุกตใชกับงานจริงได
บทที่
6
บทที่ 6 ตัวแปรอารเรย หนาที่ 142
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
เนื้อหาบทเรียน
♦ ตัวแปรอารเรย(array of local variable)
♦ สมาชิกอารเรย(array of attribute)
♦ อารเรยของคลาส(array of class)
♦ การสงผานขอมูลอารเรยระหวางเมธอด
♦ อารเรยหลายมิติ(multi dimensional array)
บทที่ 6 ตัวแปรอารเรย หนาที่ 143
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวแปรอารเรยคือ ตัวแปรชุดชนิด reference data type แบบพิเศษ ที่สามารถเก็บขอมูลชนิด
เดียวกันไดหลายคา เปนชุดของขอมูลที่มีประเภทเดียวกัน เชน ขอมูลคะแนนสอบของนักเรียน 15 คน
ขอมูลอุณหภูมิของชวงหกโมงเย็นใน 1 เดือน ขอมูลปริมาณน้ําฝนใน 1 ป เปนตนเราสามารถ
ประยุกตใชตัวแปรอารเรยชวยจัดการกับขอมูลดังกลาวเพื่อนํามาประมวลผลตอไป เชนใชในการหา
คาเฉลี่ยของปริมาณน้ําฝนในรอบ 12 เดือน เก็บขอมูลนิสิตสาขาวิทยาการคอมพิวเตอร เปนตน ซึ่งสา
มาชิกของอารเรยอาจเปนตัวแปรพื้นฐาน(Primitive Data Types)หรือตัวแปรอางอิง(Reference Data
Types)ก็ได จํานวนสมาชิกของอารเรยมีขนาดแนนอนไมสามารถเปลี่ยนแปลงขนาดได และสมาชิก
ของอารเรยแตละตัวจะมีลําดับประจําตัวอยู
อารเรยในภาษาจาวาเปนวัตถุ ดังนั้นจึงเปนการดีที่จะไดเห็นตัวอยางการเอาแนวคิดเรื่องวัตถุไป
ใชจริง อยางไรก็ตามอารเรยเปนวัตถุพิเศษจึงมีวิธีการใชงานและคําสั่งที่ไมเหมือนกับวัตถุทั่วไปนัก
ตัวอยาง การเขียนโปรแกรมเพื่อคํานวณคาเฉลี่ยดวยวิธีธรรมดาไมไดใชตัวแปรอารเรย
import javax.swing.JOptionPane;
public class InputTest {
public static void main(String args[]){
float sum = 0.0f, rainfall, annualAverage;
for (int i=0; i < 12; i++) {
String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1));
rainfall =Float.parseFloat(input);
sum += rainfall;
}
annualAverage = sum / 12.0f;
JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage);
System.exit(0);
}
}
จากโปรแกรมนี้เมื่อทําการรันจะปรากฎหนาจอเพื่อรับคาปริมาณน้ําฝนจํานวน 12 ครั้งดังหนาจอตอไปนี้
บทที่ 6 ตัวแปรอารเรย หนาที่ 144
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
เมื่อครบ 12 ครั้งแลวจะแสดงคาเฉลี่ยดังหนาจอตอไปนี้
จากโปแกรมดังกลาวหากตองการทราบปริมาณน้ําฝนในแตละเดือนจะไมสามารถนํากลับมาแสดงได
ดังนั้นหากขอมูลที่ตองการจัดเก็บมีลักษณะนี้ใหทําการเก็บขอมูลไวในตัวแปรชนิดอารเรย
6.1. การประกาศตัวแปรอารเรย 1 มิติสําหรับตัวแปรชนิดพื้นฐาน
อารเรยเปนวัตถุ ดังนั้นตองมีการประกาศตัวแปรอางอิง และสรางอินสแตนท การประกาศ
อารเรยหรือการประกาศตัวแปรอางอิงแบบอารเรยมี 2 รูปแบบคือ
รูปแบบที่ 1
Data_type[] data_identifier;
เชน double[ ] rainfall;
int[] a , b ,c ; // a ,b ,c เปนตัวแปร integer ชนิดอารเรย 1 มิติ
รูปแบบที่ 2
Data_type data_identifier[];
เชน double rainfall[ ];
int a , b[] , c ; // a , c เปนตัวแปร integer สวน b เปนตัวแปร integer ชนิดอารเรย
หมายเหตุ
ในการประกาศตัวแปรอารเรยนั้นไมสามารถระบุขนาดของ array ในสวน declare ได
เชน int a[3]; // error
บทที่ 6 ตัวแปรอารเรย หนาที่ 145
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
6.2 การสราง Array
เมื่อทําการประกาศตัวแปรแลวใหทําการสรางตัวแปรอารเรยโดยใชคําสั่ง new
รูปแบบที่ 1 สรางเมื่อประกาศตัวแปรอารเรยแลว
Data_identifier[] = new data_type[size_of_arry];
เชน rainfall = new double[12];
a = new int[5];
b = new int[20];
รูปแบบที่ 2 ทําการประกาศตัวแปรอารเรยพรอมสรางตัวแปรอารเรย
Data_type Data_identifier = new data_type[size_of_arry];
เชน double[ ] rainfall = new double[12]; //ทําการประกาศ &สราง
rainfall
0 1 2 3 4 5 6 7 8 9 10 11
rainfall[2]ตําแหนงแรกตําแหนงแรก
ของของ AArrrraayy จะเปนตําแหนงที่จะเปนตําแหนงที่ 00
หมายเหตุ :
หากตองการทราบขนาดของอารเรยสามารถหาไดจาก
รูปแบบ
ชื่อตัวแปรอารเรย.length
เชน int a ;
double[] rainfall = new double[12];
a = rainfall.length;
// a = 12
บทที่ 6 ตัวแปรอารเรย หนาที่ 146
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง แสดงการกําหนดคาเริ่มตนใหกับอารเรย 1 มิติ ดวยตัวอักษร A – Z
class testArray{
public static void main(String[] args) {
char ch[];
ch = new char[26];
// loop กําหนดคาเริ่มตนใหกับตัวแปรอารเรย
for(int i = 0; i < ch.length ; i ++){// สิ่งที่ไดจาก ch.length คือขนาดของอารเรย ch
ch[i] = (char)('A'+i);
}
// นําคาที่อยูในตัวแปรอารเรยมาแสดงบนหนาจอ
for (int i=0; i< ch.length ;i++ ){
System.out.print(ch[i] + "t");
}
}
}
ผลลัพธที่ไดคือ
A B C D E F G H I J K L
M N O P Q R S T U V W
X Y Z
ตัวอยาง การใชงาน Array
import javax.swing.JOptionPane;
public class InputTest {
public static void main(String args[]){
double[ ] rainfall = new double[12];
double annualAverage, sum = 0.0f;
for (int i = 0; i < rainfall.length ; i++) {
String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1));
rainfal[i]l =Float.parseFloat(input);//ทําการแปลงคาจากตัวหนังสือเปน float
sum += rainfall[i];
}
บทที่ 6 ตัวแปรอารเรย หนาที่ 147
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
annualAverage = sum / rainfall.length; // rainfall.length = ขนาดของอารเรย rainfall
JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage);
System.exit(0);
}
}
ตัวอยาง สวนของโปรแกรมเพื่อกําหนดคาเริ่มตนใหกับตัวแปรอารเรย
double[ ] rainfall = new double[12];
String[ ] monthName = new String[12];
monthName[0] = “January”;
monthName[1] = “February”;
…
double annualAverage, sum = 0.0f;
for (int i = 0; i < rainfall.length; i++) {
String input = JOptionPane.showInputDialog("Rainfall for month" + monthName[i]);
rainfal[i]l =Float.parseFloat(input);
sum += rainfall[i];
}
annualAverage = sum / rainfall.length;
ตัวอยาง สวนของการหาคาเฉลี่ยปริมาณน้ําฝนในแตละไตรมาศ
double[ ] quarterAverage = new double[4];
for (int i = 0; i < 4; i++) {
sum = 0;
for (int j = 0; j < 3; j++) {//compute the sum of one quarter
sum += rainfall[3*i + j];
}
quarterAverage[i] = sum / 3.0; //Quarter (i+1) average
ประกาศและสรางตัวแปรอารเรย
กําหนดคาเริ่มตนใหแกตัวแปรอารเรย
บทที่ 6 ตัวแปรอารเรย หนาที่ 148
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
หมายเหตุ
- Array ใน Java นั้นไมอยูในรูปแบบขอมูลเรียงตอๆกัน หากแตเปน Object ชนิดหนึ่ง
- Array ที่ยังไมทําการสราง(Construct)โดยใชคําสั่ง new จะมีคาเปน null หากมีการใชจะเกิด Runtime
Exception (NullException) จะกลาวถึงในบทที่ 13 ในตอนนี้ทราบเพียงวาสิ่งที่เกิดขึ้นเปนขอผิดพลาด
ชนิดหนึ่ง เกิดในขณะ run โปรแกรม
6.4 การกําหนดคาเริ่มตนให Array
เราสามารถทําการประกาศตัวแปร Array และทําการกําหนดคาเริ่มตนใหตัวแปร Array ในณะ
เดียวกันเชนเดียวกับการประกาศตัวแปรชนิดอื่นๆ
ตัวอยาง การสรางและกําหนดคาเริ่มตนใหอารเรย
int[ ] number = { 2, 4, 6, 8 };
double[ ] samplingData = { 2.443, 8.99, 12.3, 45.009, 18.2, 9.00, 3.123, 22.084, 18.08 };
char[] ch = {‘w’,’x’,’y’,’z’};
String[ ] monthName = {"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October" , "November", "December" };
สังเกตวา กรณีที่กําหนดคาให array พรอมๆกับ declare ไมตองใช new
เชน int []a = { 1,2,3};
ตัวอยาง สรางและกําหนดคาแบบ Anonymous Array
char [] ch;
ch = new char[] {‘a’ , ‘b’, ‘c’};
หมายเหตุ
- การอางอิงเลข index ของ array ที่มากกวา length นั้นจะทําใหเกิด Run Time Exception เรียกวา
ArrayIndexOutofBoundException
- จะตองกําหนด size ของ array ที่จะสรางเสมอ หรือไมเชนนั้นก็ตองระบุสมาชิกใหแก array
int [] a ; a = new int[5];
int [] b ; b = new int[] {1,2,3};
Object [] c = new Object[3];
Object [] d = new Object[] {new Object(),”Test”}
บทที่ 6 ตัวแปรอารเรย หนาที่ 149
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
- จากการใชคําสั่ง char [] ch = new char[4];
ตัวอยาง หากไมไดกําหนดคาเริ่มตนใหตัวแปร Array จาวาเวอรชัวร(JVM) เปนผูกําหนดคาเริ่มตนใหใน
ขณะที่สรางตัวแปรอารเรยดวยคําสั่ง new
class NonInitial {
public static void main(String[] args) {
int size = 3;
byte b[] = new byte[size];
short s[] = new short[size];
int in[] = new int[size];
float f[]=new float[size];
boolean bl[] = new boolean[size];
System.out.println(" tbytetshorttinttfloattboolean");
for(int i =0; i<b.length; i++){
System.out.println("index "+ i + "t"+b[i] +"t"+s[i]+"t"+in[i]+"t" +f[i]+"t"
+ bl[i]+"t"+ "stop");
}
}
}
ผลลัพธที่ได
byte short int float boolean
index 0 0 0 0 0.0 false stop
index 1 0 0 0 0.0 false stop
index 2 0 0 0 0.0 false stop
Stack Execution
ch
บทที่ 6 ตัวแปรอารเรย หนาที่ 150
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
6.5 อารเรยของ Objects
นอกจาก Arrays จะสามารถใชงานกับขอมูลประเภท Primitive Data Type แลว เรายังสามารถ
ใชงาน Array กับขอมูลประเภท Reference Data Type ไดอีกดวย
ตัวอยาง Class Person
ขั้นตอนที่ 1
Person[ ] person; // ประกาศออบเจ็ค
ขั้นตอนที่ 2
person = new Person[5]; // สรางออบเจ็ค
ขั้นตอนที่ 3
person[0] = new Person ( );
Person
name : String
inpStr : String
age : int
gender : char
setName(String) : void
setinpStr(String) : void
setAge(int ) : void
setGender(char) : void
ppeerrssoonn
ppeerrssoonn
0 1 2 3 4
Person
ppeerrssoonn
0 1 2 3 4
บทที่ 6 ตัวแปรอารเรย หนาที่ 151
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การสราง Person objects และการสราง person array
import javax.swing.JOptionPane;
class Person{
String name;
int age;
char gender;
void setAge(int a){age = a;}
void setName(String s){name =s;}
void setGender(char g){gender = g;}
};
public class TestCreateObjectArray{
public static void main(String[] args) {
Person[ ] person = new Person[2];
String name, inpStr;
int age;
char gender;
// ทําการรับคาใหเพื่อกําหนดคาใหกับ Object Person
for (int i = 0; i < person.length; i++) {
name = JOptionPane.showInputDialog("Enter name:"); //รับชื่อ
inpStr = JOptionPane.showInputDialog("Enter age:");//รับขอมูลอายุ
age = Integer.parseInt(inpStr);//ทําการเปลี่ยนคาที่รับเปนชนิด integer
inpStr = JOptionPane.showInputDialog("Enter gender:");//รับขอมูลเพศ
gender = inpStr.charAt(0);// gender ตัดเฉพาะตัวอักษรตัวแรกของ inpStr
person[i] = new Person( ); //สราง object Person
person[i].setName(name); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i]
person[i].setAge ( age ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i]
person[i].setGender( gender ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i]
}
// แสดงคาที่อยูใน Object Person บนหนาจอ Output
for(int i = 0 ; i < person.length;i++){
System.out.println("Person Number " + (i+1) );
บทที่ 6 ตัวแปรอารเรย หนาที่ 152
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
System.out.println(person[i].name + " " + person[i].age + " " +person[i].gender);
}
System.exit(0);
}}
เมื่อทําการกรอกขอมูลจํานวน 2 คนแลวจะปรากฎขอมูลตอไปนี้ในผลลัพธ
Person Number 1
surangkana 20 F
Person Number 2
suda 24 m
ตัวอยาง การหาคนที่อายุมากและอายุนอยที่สุด
int minIdx = 0; //index to the youngest person
int maxIdx = 0; //index to the oldest person
for (int i = 1; i < person.length; i++) {
if ( person[i].getAge() < person[minIdx].getAge() ) {
บทที่ 6 ตัวแปรอารเรย หนาที่ 153
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
minIdx = i; //found a younger person
}
else if (person[i].getAge() > person[maxIdx.getAge() ) {
maxIdx = i; //found an older person
}
6.6 ลบ Object ออกจาก Array
int delIdx = 1;
person[delIdx] = null;
6.7 อารเรย 2 มิติ
หากมีขอมูลที่เก็บในลักษณะ 2 มิติ(dimension) ดังตัวอยางตอไปนี้
ppeerrssoonn
0 1 2 3 4
ppeerrssoonn
0 1 2 3 4
บทที่ 6 ตัวแปรอารเรย หนาที่ 154
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
การจัดการกับขอมูลลักษณะนี้เหมาะกับการใชตัวแปรอารเรย 2 มิติ
6.7.1 การประกาศ Array 2 มิติ
รูปแบบที่ 1
Data_type [][] Data_identifier ;
เชน float[ ] [ ] payScaleTable;
รูปแบบที่ 2
Data_type Data_identifier [][];
เชน float payscaleTable[ ][ ];
สังเกตุวา ตําแหนงของ [] ไมมีผลใดๆ ตอการการประกาศ Array
int a[];
int[] b;
int[] c[];
int[][] 3;
6.7.2 การสราง Array 2 มิติ
รูปแบบที่ 1
Data_identifier = new Data_type[size][size];
เชน payScaleTable = new float[4][5];
บทที่ 6 ตัวแปรอารเรย หนาที่ 155
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
รูปแบบที่ 2
Data_type[][]Data_identifier = new Data_type [size][size];
เชน double[][] a = new double[3][5];
หรือ
เชน double [][] a;
a = new double[3][];
a[0] = new double[5];
a[1] = new double[5];
a[2] = new double[5];
ตัวอยาง การสรางและกําหนดคาแบบ Anonymous Array
int [] [] i = new int[][] { {1, 4}, {1} };
ตัวอยาง การสรางอารเรย 2 มิติ
char []ch[] = new char[2][3];
ตัวอยาง การสรางอารเรย 2 มิติ
char ch[][] = new char[2][];
ch[0] = new char[3];
ch[1] = new char[2];
Stack
Execution
ch
Stack Execution
ch
บทที่ 6 ตัวแปรอารเรย หนาที่ 156
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ตัวอยาง การสรางอารเรย 3 มิติ
char ch[][][] = new char[3][][];
ch[0] = new char[3][];
ch[1] = new char[2][];
ch[2] = new char[4][];
ch[0][0] = new char[2];
ch[0][1] = new char[3];
ch[0][2] = new char[1];
………….
หมายเหตุ
สําหรับอารเรยหลายมิติจะตองระบุ size อยางนอย 1 คาของ dimension สูงสุด เชน
int [][][]a = new int[2][][];
int [][][]b = new int[2][3][];
int [][][]c = new int[2][][4]; // error
Stack
Execution
ch
ch[0]
ch[1]
ch[2]
ch[0][0]
ch[0][1]
ch[0][2]
ch[1][0]
ch[1][1]
ch[2][0]
ch[2][1]
ch[2][2]
ch[2][3]
ch[0][0][0]
ch[0][0][1]
ch[0][1][0]
ch[0][1][1]
ch[0][1][2]
ch[0][2][0]
ch[0][2][0]
=’0x0000’
=’0x0000’
=’0x0000’
=’0x0000’
=’0x0000’
=’0x0000’
=’0x0000’
Heap memory
บทที่ 6 ตัวแปรอารเรย หนาที่ 157
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
6.7.3 การกําหนดคาใหตัวแปรอารเรยหลายมิติ
เมื่อทําการประกาศ (declaration)ตัวแปรอารเรย และทําการจองพื้นที่แลว ถาตองการกําหนดคา
ใหกับตัวแปรอารเรยในการอางถึงตัวแปรอารเรย 2 มิติใหพิจารณาดังตัวอยางตอไปนี้
ตัวอยางโปรแกรมกําหนดคาใหกับอารเรย 2 มิติ ทุกตัวแปรมีคาเปน Z
char[][] page = new char[30][100];
// page.length มีคาเทากับ 30
// page[0].length มีคาเทากับ 100
int row, col;
for (row = 0; row < page.length; row++)
for(col=0;col<page[row].length;col++)
page[row][column] = 'Z';
สําหรับการกําหนดคาใหกับตัวแปรหลายมิติจะตองใหตัวแปรอารเรยทั้งสองมีมิติที่สอดคลองกัน
ดังตัวอยาง
int[] blots;
int[][] squeegees = new int[3][];
blots = squeegees; // error , squeegees เปน อารเรย 2 มิติของ integer
int[] blocks = new int[6];
blots = blocks; // OK, blocks เปนอารเรยของ integer
int[][] books = new int[3][];
int[] numbers = new int[6];
int aNumber = 7;
books[0] = aNumber; //error เพราะใหคา integer แก อินสแตนทของอารเรย
books[0] = numbers; //OK, numbers เปน array
บทที่ 6 ตัวแปรอารเรย หนาที่ 158
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
6.7.3 การหาขนาดของ array
เมื่อเราสรางออปเจ็คของ array แลว JVM จะไปกําหนด attribute ตัวหนึ่งชื่อวา length ใหมีคาเทากับ
ขนาดของ array
ตัวอยาง int []i = new int [10];
แลว i.length จะมีคาเทากับ 10
int [][] i = new int[3][8];
แลว i[0].length ก็จะมีคาเทากับ 8
แลว i[1].length ก็จะมีคาเทากับ 8
แลว i[2].length ก็จะมีคาเทากับ 8
แลว i[3].length เกิดขอผิดพลาดที่ชื่อวา ArrayIndexOutOfBoundsException ตอนรันโปรแกรม
ตัวอยาง
class SizeOfArrayTreeDimension{
public static void main(String[] args) {
char ch[][][] = new char[3][][];
ch[0] = new char[3][];
ch[1] = new char[2][];
ch[2] = new char[4][];
ch[0][0] = new char[5];
ch[0][1] = new char[3];
ch[0][2] = new char[1];
System.out.println(" size of ch.length = " + ch.length);
System.out.println(" size of ch[0].length = " + ch[0].length);
System.out.println(" size of ch[1].length = " + ch[1].length);
System.out.println(" size of ch[2].length = " + ch[2].length);
System.out.println(" size of ch[0][0].length = "+ ch[0][0].length);
System.out.println(" size of ch[0][1].length = " + ch[0][1].length);
System.out.println(" size of ch[0][2].length = " + ch[0][2].length);
}
}
บทที่ 6 ตัวแปรอารเรย หนาที่ 159
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
ผลลัพธที่ไดคือ
size of ch.length = 3
size of ch[0].length = 3
size of ch[1].length = 2
size of ch[2].length = 4
size of ch[0][0].length = 5
size of ch[0][1].length = 3
size of ch[0][2].length = 1
บทที่ 6 ตัวแปรอารเรย หนาที่ 160
เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง
อ.สุรางคนา ระวังยศ
แบบฝกหัด
1. ใหทําการสรางไฟลชื่อ Array1.java
- ประกาศตัวแปรชนิดขอมูลอารเรยชนิด Integer ชื่อ var
- สรางออบเจ็ค var ใหมีจํานวนหนึ่งมิติขนาดเทากับ 5
- กําหนดคาใหสมาชิกทุกตัวในอารเรยมีคาเทากับ index ของตัวเอง คูณดวย 2
- ทําการแสดงคาของสมาชิกทุกตัว
2. ทําการสรางคลาสชื่อ Student โดยมี attribute เก็บชื่อและลําดับที่ของ Student โดยรับคาจาก
การสรางออบเจ็ค
- ทําการเก็บขอมูล Student ดังนี้
ลําดับที่ 1 ชื่อ Jane
ลําดับที่ 2 ชื่อ Jimmy
ลําดับที่ 3 ชื่อ Dan
ลําดับที่ 4 ชื่อ Nisa
- ทําการแสดงขอมูลเลขที่และชื่อของ คลาส Student ดังกลาว
3. สราง class DateofBirth และ class Student ซึ่งมีโครงสรางคลาสดังนี้
โดยสรางตัวแปร array เพื่อรับขอมูลของนิสิตจํานวน 5 คน ดังขอมูลตอไปนี้ แลวแสดงคาตัวแปร
ดังกลาวออกทางหนาจอ
ID NAME DateofBirth
250 Dang 15-12-1986
251 Dumlong 14-06-1987
252 Dararat 12-07-1985
253 Darintorn 20-02-1985
254 Darinee 19-05-1986
Date
day : int
month : String
year : int
Student
Id : int
Name : String
Db : Date
getId() : int
getName() : String
getDb( ) : Date

More Related Content

What's hot

Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysWongyos Keardsri
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงNaphamas
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Wongyos Keardsri
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Thanachart Numnonda
 
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Thanachart Numnonda
 
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริงKittinan Noimanee
 
Java-Chapter 05 String Operations
Java-Chapter 05 String OperationsJava-Chapter 05 String Operations
Java-Chapter 05 String OperationsWongyos Keardsri
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Wongyos Keardsri
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรMook Sasivimon
 
Java-Chapter 02 Data Operations and Processing
Java-Chapter 02 Data Operations and ProcessingJava-Chapter 02 Data Operations and Processing
Java-Chapter 02 Data Operations and ProcessingWongyos Keardsri
 
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5palmyZommanow
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]Mook Sasivimon
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตThanachart Numnonda
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5สิรินยา ปาโจด
 
Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Wongyos Keardsri
 
Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Wongyos Keardsri
 

What's hot (19)

Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 
Array
ArrayArray
Array
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional Arrays
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
 
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
 
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
(Big One) C Language - 02 ฟังก์ชันส่งผ่านสตริง
 
Java-Chapter 05 String Operations
Java-Chapter 05 String OperationsJava-Chapter 05 String Operations
Java-Chapter 05 String Operations
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขรบทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขร
 
Java-Chapter 02 Data Operations and Processing
Java-Chapter 02 Data Operations and ProcessingJava-Chapter 02 Data Operations and Processing
Java-Chapter 02 Data Operations and Processing
 
Array 2
Array 2Array 2
Array 2
 
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5หน่วยที่2 โครงสร้างข้อมูล  นาย ธนพงษ์  น่านกร  เลขที่ 1   ชั้น ม.5
หน่วยที่2 โครงสร้างข้อมูล นาย ธนพงษ์ น่านกร เลขที่ 1 ชั้น ม.5
 
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
บทที่ 5 ตัวแปรชุดและตัวแปรกลุ่มอักขระ[w]
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
 
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา  ปาโจด ม.5
หน่วยที่2 เรื่อง โครงสร้างข้อมูล นางสาว สิรินยา ปาโจด ม.5
 
Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)
 
Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)Java-Answer Chapter 01-04 (For Print)
Java-Answer Chapter 01-04 (For Print)
 

Similar to บทที่ 6 อาร์เรย์

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ Areeya Onnom
 
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1หน่อย หน่อย
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานNookky Anapat
 
บทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริบทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริTheeravaj Tum
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Thank Chiro
 
Computer programming
Computer  programmingComputer  programming
Computer programmingPreaw Jariya
 
Computer programming
Computer programmingComputer programming
Computer programmingJariyaa
 
การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา CWarawut
 
C Programming
C ProgrammingC Programming
C ProgrammingWarawut
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1prapassonmook
 

Similar to บทที่ 6 อาร์เรย์ (20)

08 arrays
08 arrays08 arrays
08 arrays
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
02 basic
02 basic02 basic
02 basic
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาส
 
ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ ตัวแปรชุดและตัวแปรอักขระ
ตัวแปรชุดและตัวแปรอักขระ
 
Chapter 02 Flowchart
Chapter 02 FlowchartChapter 02 Flowchart
Chapter 02 Flowchart
 
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
 
บทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริบทที่ 10 ตัวแปรสตริ
บทที่ 10 ตัวแปรสตริ
 
ภาษา C#
ภาษา C#ภาษา C#
ภาษา C#
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
Tec4
Tec4Tec4
Tec4
 
C slide
C slideC slide
C slide
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Computer programming
Computer  programmingComputer  programming
Computer programming
 
Computer programming
Computer programmingComputer programming
Computer programming
 
การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา C
 
C Programming
C ProgrammingC Programming
C Programming
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Introduction toc
Introduction tocIntroduction toc
Introduction toc
 

More from Theeravaj Tum

Javacentrix com chap11-2
Javacentrix com chap11-2Javacentrix com chap11-2
Javacentrix com chap11-2Theeravaj Tum
 
Javacentrix com chap11-1
Javacentrix com chap11-1Javacentrix com chap11-1
Javacentrix com chap11-1Theeravaj Tum
 
Javacentrix com chap10-0
Javacentrix com chap10-0Javacentrix com chap10-0
Javacentrix com chap10-0Theeravaj Tum
 
Javacentrix com chap09-0
Javacentrix com chap09-0Javacentrix com chap09-0
Javacentrix com chap09-0Theeravaj Tum
 
Javacentrix com chap08-0
Javacentrix com chap08-0Javacentrix com chap08-0
Javacentrix com chap08-0Theeravaj Tum
 
Javacentrix com chap07-0
Javacentrix com chap07-0Javacentrix com chap07-0
Javacentrix com chap07-0Theeravaj Tum
 
Javacentrix com chap06-0
Javacentrix com chap06-0Javacentrix com chap06-0
Javacentrix com chap06-0Theeravaj Tum
 
Javacentrix com chap04-0
Javacentrix com chap04-0Javacentrix com chap04-0
Javacentrix com chap04-0Theeravaj Tum
 
Javacentrix com chap03-0
Javacentrix com chap03-0Javacentrix com chap03-0
Javacentrix com chap03-0Theeravaj Tum
 
Javacentrix com chap02-0
Javacentrix com chap02-0Javacentrix com chap02-0
Javacentrix com chap02-0Theeravaj Tum
 
Javacentrix com chap01-0
Javacentrix com chap01-0Javacentrix com chap01-0
Javacentrix com chap01-0Theeravaj Tum
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0Theeravaj Tum
 
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเบทที่ 13 การดักจับเ
บทที่ 13 การดักจับเTheeravaj Tum
 
บทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกบทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกTheeravaj Tum
 
บทที่ 11 การดักจับข
บทที่ 11 การดักจับขบทที่ 11 การดักจับข
บทที่ 11 การดักจับขTheeravaj Tum
 
บทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปบทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปTheeravaj Tum
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกTheeravaj Tum
 
บทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจบทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจTheeravaj Tum
 
บทที่ 4 แอทริบิวท์
บทที่ 4 แอทริบิวท์บทที่ 4 แอทริบิวท์
บทที่ 4 แอทริบิวท์Theeravaj Tum
 
บทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคบทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคTheeravaj Tum
 

More from Theeravaj Tum (20)

Javacentrix com chap11-2
Javacentrix com chap11-2Javacentrix com chap11-2
Javacentrix com chap11-2
 
Javacentrix com chap11-1
Javacentrix com chap11-1Javacentrix com chap11-1
Javacentrix com chap11-1
 
Javacentrix com chap10-0
Javacentrix com chap10-0Javacentrix com chap10-0
Javacentrix com chap10-0
 
Javacentrix com chap09-0
Javacentrix com chap09-0Javacentrix com chap09-0
Javacentrix com chap09-0
 
Javacentrix com chap08-0
Javacentrix com chap08-0Javacentrix com chap08-0
Javacentrix com chap08-0
 
Javacentrix com chap07-0
Javacentrix com chap07-0Javacentrix com chap07-0
Javacentrix com chap07-0
 
Javacentrix com chap06-0
Javacentrix com chap06-0Javacentrix com chap06-0
Javacentrix com chap06-0
 
Javacentrix com chap04-0
Javacentrix com chap04-0Javacentrix com chap04-0
Javacentrix com chap04-0
 
Javacentrix com chap03-0
Javacentrix com chap03-0Javacentrix com chap03-0
Javacentrix com chap03-0
 
Javacentrix com chap02-0
Javacentrix com chap02-0Javacentrix com chap02-0
Javacentrix com chap02-0
 
Javacentrix com chap01-0
Javacentrix com chap01-0Javacentrix com chap01-0
Javacentrix com chap01-0
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0
 
บทที่ 13 การดักจับเ
บทที่ 13 การดักจับเบทที่ 13 การดักจับเ
บทที่ 13 การดักจับเ
 
บทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิกบทที่ 12 กราฟฟิก
บทที่ 12 กราฟฟิก
 
บทที่ 11 การดักจับข
บทที่ 11 การดักจับขบทที่ 11 การดักจับข
บทที่ 11 การดักจับข
 
บทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูปบทที่ 9 การพ้องรูป
บทที่ 9 การพ้องรูป
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติก
 
บทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจบทที่ 7 แพ็คเกจ
บทที่ 7 แพ็คเกจ
 
บทที่ 4 แอทริบิวท์
บทที่ 4 แอทริบิวท์บทที่ 4 แอทริบิวท์
บทที่ 4 แอทริบิวท์
 
บทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบคบทที่ 3 คำสั่งควบค
บทที่ 3 คำสั่งควบค
 

บทที่ 6 อาร์เรย์

  • 1. ตัวแปรอารเรย Array วัตถุประสงค ♦ เพื่อใหมีความรูความเขาใจในการทํางานตัวแปรชุดหรือตัวแปรอารเรย ♦ เพื่อใหมีความรูความเขาใจในการสรางคลาสแบบอารเรยได ♦ เพื่อใหมีความรูความเขาใจในการสงผานคาตัวแปรอารเรยไปยังเมธอดตางๆ ♦ เพื่อสามารถนําแนวคิดตัวแปรอารเรยไปเขียนโปรแกรมประยุกตใชกับงานจริงได บทที่ 6
  • 2. บทที่ 6 ตัวแปรอารเรย หนาที่ 142 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ เนื้อหาบทเรียน ♦ ตัวแปรอารเรย(array of local variable) ♦ สมาชิกอารเรย(array of attribute) ♦ อารเรยของคลาส(array of class) ♦ การสงผานขอมูลอารเรยระหวางเมธอด ♦ อารเรยหลายมิติ(multi dimensional array)
  • 3. บทที่ 6 ตัวแปรอารเรย หนาที่ 143 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวแปรอารเรยคือ ตัวแปรชุดชนิด reference data type แบบพิเศษ ที่สามารถเก็บขอมูลชนิด เดียวกันไดหลายคา เปนชุดของขอมูลที่มีประเภทเดียวกัน เชน ขอมูลคะแนนสอบของนักเรียน 15 คน ขอมูลอุณหภูมิของชวงหกโมงเย็นใน 1 เดือน ขอมูลปริมาณน้ําฝนใน 1 ป เปนตนเราสามารถ ประยุกตใชตัวแปรอารเรยชวยจัดการกับขอมูลดังกลาวเพื่อนํามาประมวลผลตอไป เชนใชในการหา คาเฉลี่ยของปริมาณน้ําฝนในรอบ 12 เดือน เก็บขอมูลนิสิตสาขาวิทยาการคอมพิวเตอร เปนตน ซึ่งสา มาชิกของอารเรยอาจเปนตัวแปรพื้นฐาน(Primitive Data Types)หรือตัวแปรอางอิง(Reference Data Types)ก็ได จํานวนสมาชิกของอารเรยมีขนาดแนนอนไมสามารถเปลี่ยนแปลงขนาดได และสมาชิก ของอารเรยแตละตัวจะมีลําดับประจําตัวอยู อารเรยในภาษาจาวาเปนวัตถุ ดังนั้นจึงเปนการดีที่จะไดเห็นตัวอยางการเอาแนวคิดเรื่องวัตถุไป ใชจริง อยางไรก็ตามอารเรยเปนวัตถุพิเศษจึงมีวิธีการใชงานและคําสั่งที่ไมเหมือนกับวัตถุทั่วไปนัก ตัวอยาง การเขียนโปรแกรมเพื่อคํานวณคาเฉลี่ยดวยวิธีธรรมดาไมไดใชตัวแปรอารเรย import javax.swing.JOptionPane; public class InputTest { public static void main(String args[]){ float sum = 0.0f, rainfall, annualAverage; for (int i=0; i < 12; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1)); rainfall =Float.parseFloat(input); sum += rainfall; } annualAverage = sum / 12.0f; JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage); System.exit(0); } } จากโปรแกรมนี้เมื่อทําการรันจะปรากฎหนาจอเพื่อรับคาปริมาณน้ําฝนจํานวน 12 ครั้งดังหนาจอตอไปนี้
  • 4. บทที่ 6 ตัวแปรอารเรย หนาที่ 144 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ เมื่อครบ 12 ครั้งแลวจะแสดงคาเฉลี่ยดังหนาจอตอไปนี้ จากโปแกรมดังกลาวหากตองการทราบปริมาณน้ําฝนในแตละเดือนจะไมสามารถนํากลับมาแสดงได ดังนั้นหากขอมูลที่ตองการจัดเก็บมีลักษณะนี้ใหทําการเก็บขอมูลไวในตัวแปรชนิดอารเรย 6.1. การประกาศตัวแปรอารเรย 1 มิติสําหรับตัวแปรชนิดพื้นฐาน อารเรยเปนวัตถุ ดังนั้นตองมีการประกาศตัวแปรอางอิง และสรางอินสแตนท การประกาศ อารเรยหรือการประกาศตัวแปรอางอิงแบบอารเรยมี 2 รูปแบบคือ รูปแบบที่ 1 Data_type[] data_identifier; เชน double[ ] rainfall; int[] a , b ,c ; // a ,b ,c เปนตัวแปร integer ชนิดอารเรย 1 มิติ รูปแบบที่ 2 Data_type data_identifier[]; เชน double rainfall[ ]; int a , b[] , c ; // a , c เปนตัวแปร integer สวน b เปนตัวแปร integer ชนิดอารเรย หมายเหตุ ในการประกาศตัวแปรอารเรยนั้นไมสามารถระบุขนาดของ array ในสวน declare ได เชน int a[3]; // error
  • 5. บทที่ 6 ตัวแปรอารเรย หนาที่ 145 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.2 การสราง Array เมื่อทําการประกาศตัวแปรแลวใหทําการสรางตัวแปรอารเรยโดยใชคําสั่ง new รูปแบบที่ 1 สรางเมื่อประกาศตัวแปรอารเรยแลว Data_identifier[] = new data_type[size_of_arry]; เชน rainfall = new double[12]; a = new int[5]; b = new int[20]; รูปแบบที่ 2 ทําการประกาศตัวแปรอารเรยพรอมสรางตัวแปรอารเรย Data_type Data_identifier = new data_type[size_of_arry]; เชน double[ ] rainfall = new double[12]; //ทําการประกาศ &สราง rainfall 0 1 2 3 4 5 6 7 8 9 10 11 rainfall[2]ตําแหนงแรกตําแหนงแรก ของของ AArrrraayy จะเปนตําแหนงที่จะเปนตําแหนงที่ 00 หมายเหตุ : หากตองการทราบขนาดของอารเรยสามารถหาไดจาก รูปแบบ ชื่อตัวแปรอารเรย.length เชน int a ; double[] rainfall = new double[12]; a = rainfall.length; // a = 12
  • 6. บทที่ 6 ตัวแปรอารเรย หนาที่ 146 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง แสดงการกําหนดคาเริ่มตนใหกับอารเรย 1 มิติ ดวยตัวอักษร A – Z class testArray{ public static void main(String[] args) { char ch[]; ch = new char[26]; // loop กําหนดคาเริ่มตนใหกับตัวแปรอารเรย for(int i = 0; i < ch.length ; i ++){// สิ่งที่ไดจาก ch.length คือขนาดของอารเรย ch ch[i] = (char)('A'+i); } // นําคาที่อยูในตัวแปรอารเรยมาแสดงบนหนาจอ for (int i=0; i< ch.length ;i++ ){ System.out.print(ch[i] + "t"); } } } ผลลัพธที่ไดคือ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ตัวอยาง การใชงาน Array import javax.swing.JOptionPane; public class InputTest { public static void main(String args[]){ double[ ] rainfall = new double[12]; double annualAverage, sum = 0.0f; for (int i = 0; i < rainfall.length ; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1)); rainfal[i]l =Float.parseFloat(input);//ทําการแปลงคาจากตัวหนังสือเปน float sum += rainfall[i]; }
  • 7. บทที่ 6 ตัวแปรอารเรย หนาที่ 147 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ annualAverage = sum / rainfall.length; // rainfall.length = ขนาดของอารเรย rainfall JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage); System.exit(0); } } ตัวอยาง สวนของโปรแกรมเพื่อกําหนดคาเริ่มตนใหกับตัวแปรอารเรย double[ ] rainfall = new double[12]; String[ ] monthName = new String[12]; monthName[0] = “January”; monthName[1] = “February”; … double annualAverage, sum = 0.0f; for (int i = 0; i < rainfall.length; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + monthName[i]); rainfal[i]l =Float.parseFloat(input); sum += rainfall[i]; } annualAverage = sum / rainfall.length; ตัวอยาง สวนของการหาคาเฉลี่ยปริมาณน้ําฝนในแตละไตรมาศ double[ ] quarterAverage = new double[4]; for (int i = 0; i < 4; i++) { sum = 0; for (int j = 0; j < 3; j++) {//compute the sum of one quarter sum += rainfall[3*i + j]; } quarterAverage[i] = sum / 3.0; //Quarter (i+1) average ประกาศและสรางตัวแปรอารเรย กําหนดคาเริ่มตนใหแกตัวแปรอารเรย
  • 8. บทที่ 6 ตัวแปรอารเรย หนาที่ 148 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ หมายเหตุ - Array ใน Java นั้นไมอยูในรูปแบบขอมูลเรียงตอๆกัน หากแตเปน Object ชนิดหนึ่ง - Array ที่ยังไมทําการสราง(Construct)โดยใชคําสั่ง new จะมีคาเปน null หากมีการใชจะเกิด Runtime Exception (NullException) จะกลาวถึงในบทที่ 13 ในตอนนี้ทราบเพียงวาสิ่งที่เกิดขึ้นเปนขอผิดพลาด ชนิดหนึ่ง เกิดในขณะ run โปรแกรม 6.4 การกําหนดคาเริ่มตนให Array เราสามารถทําการประกาศตัวแปร Array และทําการกําหนดคาเริ่มตนใหตัวแปร Array ในณะ เดียวกันเชนเดียวกับการประกาศตัวแปรชนิดอื่นๆ ตัวอยาง การสรางและกําหนดคาเริ่มตนใหอารเรย int[ ] number = { 2, 4, 6, 8 }; double[ ] samplingData = { 2.443, 8.99, 12.3, 45.009, 18.2, 9.00, 3.123, 22.084, 18.08 }; char[] ch = {‘w’,’x’,’y’,’z’}; String[ ] monthName = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October" , "November", "December" }; สังเกตวา กรณีที่กําหนดคาให array พรอมๆกับ declare ไมตองใช new เชน int []a = { 1,2,3}; ตัวอยาง สรางและกําหนดคาแบบ Anonymous Array char [] ch; ch = new char[] {‘a’ , ‘b’, ‘c’}; หมายเหตุ - การอางอิงเลข index ของ array ที่มากกวา length นั้นจะทําใหเกิด Run Time Exception เรียกวา ArrayIndexOutofBoundException - จะตองกําหนด size ของ array ที่จะสรางเสมอ หรือไมเชนนั้นก็ตองระบุสมาชิกใหแก array int [] a ; a = new int[5]; int [] b ; b = new int[] {1,2,3}; Object [] c = new Object[3]; Object [] d = new Object[] {new Object(),”Test”}
  • 9. บทที่ 6 ตัวแปรอารเรย หนาที่ 149 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ - จากการใชคําสั่ง char [] ch = new char[4]; ตัวอยาง หากไมไดกําหนดคาเริ่มตนใหตัวแปร Array จาวาเวอรชัวร(JVM) เปนผูกําหนดคาเริ่มตนใหใน ขณะที่สรางตัวแปรอารเรยดวยคําสั่ง new class NonInitial { public static void main(String[] args) { int size = 3; byte b[] = new byte[size]; short s[] = new short[size]; int in[] = new int[size]; float f[]=new float[size]; boolean bl[] = new boolean[size]; System.out.println(" tbytetshorttinttfloattboolean"); for(int i =0; i<b.length; i++){ System.out.println("index "+ i + "t"+b[i] +"t"+s[i]+"t"+in[i]+"t" +f[i]+"t" + bl[i]+"t"+ "stop"); } } } ผลลัพธที่ได byte short int float boolean index 0 0 0 0 0.0 false stop index 1 0 0 0 0.0 false stop index 2 0 0 0 0.0 false stop Stack Execution ch
  • 10. บทที่ 6 ตัวแปรอารเรย หนาที่ 150 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.5 อารเรยของ Objects นอกจาก Arrays จะสามารถใชงานกับขอมูลประเภท Primitive Data Type แลว เรายังสามารถ ใชงาน Array กับขอมูลประเภท Reference Data Type ไดอีกดวย ตัวอยาง Class Person ขั้นตอนที่ 1 Person[ ] person; // ประกาศออบเจ็ค ขั้นตอนที่ 2 person = new Person[5]; // สรางออบเจ็ค ขั้นตอนที่ 3 person[0] = new Person ( ); Person name : String inpStr : String age : int gender : char setName(String) : void setinpStr(String) : void setAge(int ) : void setGender(char) : void ppeerrssoonn ppeerrssoonn 0 1 2 3 4 Person ppeerrssoonn 0 1 2 3 4
  • 11. บทที่ 6 ตัวแปรอารเรย หนาที่ 151 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การสราง Person objects และการสราง person array import javax.swing.JOptionPane; class Person{ String name; int age; char gender; void setAge(int a){age = a;} void setName(String s){name =s;} void setGender(char g){gender = g;} }; public class TestCreateObjectArray{ public static void main(String[] args) { Person[ ] person = new Person[2]; String name, inpStr; int age; char gender; // ทําการรับคาใหเพื่อกําหนดคาใหกับ Object Person for (int i = 0; i < person.length; i++) { name = JOptionPane.showInputDialog("Enter name:"); //รับชื่อ inpStr = JOptionPane.showInputDialog("Enter age:");//รับขอมูลอายุ age = Integer.parseInt(inpStr);//ทําการเปลี่ยนคาที่รับเปนชนิด integer inpStr = JOptionPane.showInputDialog("Enter gender:");//รับขอมูลเพศ gender = inpStr.charAt(0);// gender ตัดเฉพาะตัวอักษรตัวแรกของ inpStr person[i] = new Person( ); //สราง object Person person[i].setName(name); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] person[i].setAge ( age ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] person[i].setGender( gender ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] } // แสดงคาที่อยูใน Object Person บนหนาจอ Output for(int i = 0 ; i < person.length;i++){ System.out.println("Person Number " + (i+1) );
  • 12. บทที่ 6 ตัวแปรอารเรย หนาที่ 152 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ System.out.println(person[i].name + " " + person[i].age + " " +person[i].gender); } System.exit(0); }} เมื่อทําการกรอกขอมูลจํานวน 2 คนแลวจะปรากฎขอมูลตอไปนี้ในผลลัพธ Person Number 1 surangkana 20 F Person Number 2 suda 24 m ตัวอยาง การหาคนที่อายุมากและอายุนอยที่สุด int minIdx = 0; //index to the youngest person int maxIdx = 0; //index to the oldest person for (int i = 1; i < person.length; i++) { if ( person[i].getAge() < person[minIdx].getAge() ) {
  • 13. บทที่ 6 ตัวแปรอารเรย หนาที่ 153 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ minIdx = i; //found a younger person } else if (person[i].getAge() > person[maxIdx.getAge() ) { maxIdx = i; //found an older person } 6.6 ลบ Object ออกจาก Array int delIdx = 1; person[delIdx] = null; 6.7 อารเรย 2 มิติ หากมีขอมูลที่เก็บในลักษณะ 2 มิติ(dimension) ดังตัวอยางตอไปนี้ ppeerrssoonn 0 1 2 3 4 ppeerrssoonn 0 1 2 3 4
  • 14. บทที่ 6 ตัวแปรอารเรย หนาที่ 154 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ การจัดการกับขอมูลลักษณะนี้เหมาะกับการใชตัวแปรอารเรย 2 มิติ 6.7.1 การประกาศ Array 2 มิติ รูปแบบที่ 1 Data_type [][] Data_identifier ; เชน float[ ] [ ] payScaleTable; รูปแบบที่ 2 Data_type Data_identifier [][]; เชน float payscaleTable[ ][ ]; สังเกตุวา ตําแหนงของ [] ไมมีผลใดๆ ตอการการประกาศ Array int a[]; int[] b; int[] c[]; int[][] 3; 6.7.2 การสราง Array 2 มิติ รูปแบบที่ 1 Data_identifier = new Data_type[size][size]; เชน payScaleTable = new float[4][5];
  • 15. บทที่ 6 ตัวแปรอารเรย หนาที่ 155 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ รูปแบบที่ 2 Data_type[][]Data_identifier = new Data_type [size][size]; เชน double[][] a = new double[3][5]; หรือ เชน double [][] a; a = new double[3][]; a[0] = new double[5]; a[1] = new double[5]; a[2] = new double[5]; ตัวอยาง การสรางและกําหนดคาแบบ Anonymous Array int [] [] i = new int[][] { {1, 4}, {1} }; ตัวอยาง การสรางอารเรย 2 มิติ char []ch[] = new char[2][3]; ตัวอยาง การสรางอารเรย 2 มิติ char ch[][] = new char[2][]; ch[0] = new char[3]; ch[1] = new char[2]; Stack Execution ch Stack Execution ch
  • 16. บทที่ 6 ตัวแปรอารเรย หนาที่ 156 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การสรางอารเรย 3 มิติ char ch[][][] = new char[3][][]; ch[0] = new char[3][]; ch[1] = new char[2][]; ch[2] = new char[4][]; ch[0][0] = new char[2]; ch[0][1] = new char[3]; ch[0][2] = new char[1]; …………. หมายเหตุ สําหรับอารเรยหลายมิติจะตองระบุ size อยางนอย 1 คาของ dimension สูงสุด เชน int [][][]a = new int[2][][]; int [][][]b = new int[2][3][]; int [][][]c = new int[2][][4]; // error Stack Execution ch ch[0] ch[1] ch[2] ch[0][0] ch[0][1] ch[0][2] ch[1][0] ch[1][1] ch[2][0] ch[2][1] ch[2][2] ch[2][3] ch[0][0][0] ch[0][0][1] ch[0][1][0] ch[0][1][1] ch[0][1][2] ch[0][2][0] ch[0][2][0] =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ Heap memory
  • 17. บทที่ 6 ตัวแปรอารเรย หนาที่ 157 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.7.3 การกําหนดคาใหตัวแปรอารเรยหลายมิติ เมื่อทําการประกาศ (declaration)ตัวแปรอารเรย และทําการจองพื้นที่แลว ถาตองการกําหนดคา ใหกับตัวแปรอารเรยในการอางถึงตัวแปรอารเรย 2 มิติใหพิจารณาดังตัวอยางตอไปนี้ ตัวอยางโปรแกรมกําหนดคาใหกับอารเรย 2 มิติ ทุกตัวแปรมีคาเปน Z char[][] page = new char[30][100]; // page.length มีคาเทากับ 30 // page[0].length มีคาเทากับ 100 int row, col; for (row = 0; row < page.length; row++) for(col=0;col<page[row].length;col++) page[row][column] = 'Z'; สําหรับการกําหนดคาใหกับตัวแปรหลายมิติจะตองใหตัวแปรอารเรยทั้งสองมีมิติที่สอดคลองกัน ดังตัวอยาง int[] blots; int[][] squeegees = new int[3][]; blots = squeegees; // error , squeegees เปน อารเรย 2 มิติของ integer int[] blocks = new int[6]; blots = blocks; // OK, blocks เปนอารเรยของ integer int[][] books = new int[3][]; int[] numbers = new int[6]; int aNumber = 7; books[0] = aNumber; //error เพราะใหคา integer แก อินสแตนทของอารเรย books[0] = numbers; //OK, numbers เปน array
  • 18. บทที่ 6 ตัวแปรอารเรย หนาที่ 158 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.7.3 การหาขนาดของ array เมื่อเราสรางออปเจ็คของ array แลว JVM จะไปกําหนด attribute ตัวหนึ่งชื่อวา length ใหมีคาเทากับ ขนาดของ array ตัวอยาง int []i = new int [10]; แลว i.length จะมีคาเทากับ 10 int [][] i = new int[3][8]; แลว i[0].length ก็จะมีคาเทากับ 8 แลว i[1].length ก็จะมีคาเทากับ 8 แลว i[2].length ก็จะมีคาเทากับ 8 แลว i[3].length เกิดขอผิดพลาดที่ชื่อวา ArrayIndexOutOfBoundsException ตอนรันโปรแกรม ตัวอยาง class SizeOfArrayTreeDimension{ public static void main(String[] args) { char ch[][][] = new char[3][][]; ch[0] = new char[3][]; ch[1] = new char[2][]; ch[2] = new char[4][]; ch[0][0] = new char[5]; ch[0][1] = new char[3]; ch[0][2] = new char[1]; System.out.println(" size of ch.length = " + ch.length); System.out.println(" size of ch[0].length = " + ch[0].length); System.out.println(" size of ch[1].length = " + ch[1].length); System.out.println(" size of ch[2].length = " + ch[2].length); System.out.println(" size of ch[0][0].length = "+ ch[0][0].length); System.out.println(" size of ch[0][1].length = " + ch[0][1].length); System.out.println(" size of ch[0][2].length = " + ch[0][2].length); } }
  • 19. บทที่ 6 ตัวแปรอารเรย หนาที่ 159 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ size of ch.length = 3 size of ch[0].length = 3 size of ch[1].length = 2 size of ch[2].length = 4 size of ch[0][0].length = 5 size of ch[0][1].length = 3 size of ch[0][2].length = 1
  • 20. บทที่ 6 ตัวแปรอารเรย หนาที่ 160 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ แบบฝกหัด 1. ใหทําการสรางไฟลชื่อ Array1.java - ประกาศตัวแปรชนิดขอมูลอารเรยชนิด Integer ชื่อ var - สรางออบเจ็ค var ใหมีจํานวนหนึ่งมิติขนาดเทากับ 5 - กําหนดคาใหสมาชิกทุกตัวในอารเรยมีคาเทากับ index ของตัวเอง คูณดวย 2 - ทําการแสดงคาของสมาชิกทุกตัว 2. ทําการสรางคลาสชื่อ Student โดยมี attribute เก็บชื่อและลําดับที่ของ Student โดยรับคาจาก การสรางออบเจ็ค - ทําการเก็บขอมูล Student ดังนี้ ลําดับที่ 1 ชื่อ Jane ลําดับที่ 2 ชื่อ Jimmy ลําดับที่ 3 ชื่อ Dan ลําดับที่ 4 ชื่อ Nisa - ทําการแสดงขอมูลเลขที่และชื่อของ คลาส Student ดังกลาว 3. สราง class DateofBirth และ class Student ซึ่งมีโครงสรางคลาสดังนี้ โดยสรางตัวแปร array เพื่อรับขอมูลของนิสิตจํานวน 5 คน ดังขอมูลตอไปนี้ แลวแสดงคาตัวแปร ดังกลาวออกทางหนาจอ ID NAME DateofBirth 250 Dang 15-12-1986 251 Dumlong 14-06-1987 252 Dararat 12-07-1985 253 Darintorn 20-02-1985 254 Darinee 19-05-1986 Date day : int month : String year : int Student Id : int Name : String Db : Date getId() : int getName() : String getDb( ) : Date