Transcript Slide 1

อารเรย
(Array)
์ ์


เป็ นโครงสรางข
อมู
้
้ ลทีเ่ ก็บขอมู
้ ลชนิดขอมู
้ ล
เดียวกันไดมากกว
า่ 1 คา่
้
ใช้การอางชื
อ
่ ตัวแปรชือ
่ เดียวกัน มีเลขแสดง
้
ตาแหน่งของสมาชิก (index) โครงสรางของ
้
อารเรย
อมู
า่ เก็่ บ1อยู่
ย
่ ของนักศึ กคษาคนที
์ ์ ประกอบดวยข
้ เกรดเฉลี
้ ลหลายๆ
เทงกั
ากั
บ
2.57โดยใช index
่
ในหน่วยความจาตอเนื
่
อ
น
่
้
เกรดเฉลี
ย
่
ของนั
ก
ศึ
ก
ษาคนที
่ 2
ตั
ว
อย
าง
่
อ้างถึงคาข
่ องการ
่ อมู
้ ลทีต
้
เทากั
่ บ 3.12
เกรดเฉลีย
่ ของนักศึ กษาคนที่ 3
เทากั
่ บ 1.89
เกรดเฉลีย
่ ของนักศึ กษาคนที่ 4
เทากั
่ บ 2.70
2


จาแนกดวยชนิ
ดของขอมู
้
้ ล ได้ 2 ประเภท คือ
 อารเรย
ดขอมู
้ ฐาน (Array of
์ ของชนิ
์
้ ลพืน
Primitive data)
ดขอมู
 อารเรย
้ ลแบบเรฟเฟอรเรนซ
์
์
์ ของชนิ
์
(Array of Reference)
จาแนกดวยขนาดของอาร
เรย
้
์ ์ ได้ 2 ประเภท
คือ
 ตัวแปรอารเรย
์ ์ 1 มิต ิ (One-dimensional
array)
 ตัวแปรอารเรย
ต ิ (Multi-dimensional
์ หลายมิ
์
3


คือ อารเรย
่ ช
ี นิดขอมู
วเป็ นชนิด
้ ลของสมาชิกแตละตั
่
์ ที
์ ม
ข้อมูลพืน
้ ฐาน ไดแก
้ ่
byte, int, short, long, float, double, boolean และ
char
นามาใช้กาหนดเป็ นขอมู
้ ลประเภทอารเรย
์ ได
์ ้ เช่น
 ข้อมูลจานวนครัง
้ ของการฉี ดวัคซีนของเด็กนักเรียน
20 คน
มีชนิดขอมู
้ ลเป็ นเลขจานวนเต็ม (int)

ข้อมูลเกรดของนักศึ กษา 50 คน มีชนิดข้อมูลเป็ นตัว
4
อักขระ (char)


คือ อารเรย
่ มาชิกแตละตั
วมีขอมู
่
้ ลเป็ นชนิดข้อมูล
์ ที
์ ส
พืน
้ ฐาน เช่น
 ข้อมูลประเภท String เป็ นข้อมูลชนิด char หลายๆ
ตัว มาประกอบกัน
 ข้อมูลประเภทออบเจ็ กต ์ เป็ นขอมู
้ ฐานที่
้ ลชนิดพืน
แตกตางกั
นหลายๆ ตัว
่
 มาประกอบกัน
นามาใช้กาหนดเป็ นขอมู
้ ลประเภทอารเรย
์ ได
์ ้ เช่น
 ข้อมูลชือ
่ 14 จังหวัดในภาคใต้ มีชนิดขอมู
้ ลเป็ น
ข้อความ (String)

ข้อมูลผู้สอบผานการคั
ดเลือกจานวน 5 คน
่
มีชนิดขอมู
วย
้ ลเป็ นออบเจ็กตประกอบด
้
์
5

เปรียบไดกั
้ บการนาตัวแปรมาเรียงตอกั
่ นหลายๆ ตัว ใน
ลักษณะแถวขอมู
้ ล
ตัวอยาง
เช่น
่
 ตัวแปรอารเรย
้ ลจานวนเต็ม
์ ์ 1 มิต ิ intEx1 เก็บขอมู
ได้ 6 ตัว ไดดั
้ งนี้



ตัวแปรตัวแรกคือตาแหน่งที่ 0 มีคาเท
่ ากั
่ บ 5 
intEx1[0] = 5
ตัวแปรตัวที่ 2 คือตาแหน่งที่ 1 มีคาเท
่ ากั
่ บ 8
intEx1[1] = 8
ตัวแปรตัวสุดทายคื
อตาแหน่งที่ 5 มีคาเท
้
่ ากั
่ บ 2 6


มีรูปแบบ ดังนี้
dataType [] ArrayName;
โดยที่
dataType เป็ นชนิดขอมู
้ ลของตัวแปรอารเรย
์ ที
์ ่
ต้องการ
ArrayNameเป็ นชือ
่ ตัวแปรอารเรย
์ ์ ซึ่งตัง้ ตามกฎการ
ตัง้ ชือ
่
ต้องกาหนดขนาดของอารเรย
าไปใช้งานใน
่
์ ก
์ อนน
โปรแกรม
ArrayName = new dataType [n];
โดยที่
dataType เป็ นชนิดขอมู
้ ลของตัวแปรอารเรย
์ ที
์ ่ 7
ตองการ

vaccine_count เป็ นตัวแปรแทน
ข้อมูลจานวนครัง้ ของการฉี ดวัคซีน
ของเด็กนักเรียน 20 คน

std_grade เป็ นตัวแปรแทนขอมู
้ ล
เกรด
ของนักศึ กษา 50 คน

prov_name เป็ นตัวแปรแทนขอมู
้ ล
ชือ
่ 14 จังหวัดภาคใต้
8

กาหนดได้ 2 รูปแบบ ดังนี้
 กาหนดคาพร
อมกั
บการประกาศตัวแปร มีรูปแบบดังนี้
่
้
dataType [] ArrayName = { init_value1,
init_value2, ..., init_valuen };
โดยที่
dataType เป็ นชนิดขอมู
่ องการ
้ ลของตัวแปรอารเรย
้
์ ที
์ ต
ArrayName เป็ นชือ
่ ตัวแปรอารเรย
่
์ ์ ซึง่ ตัง้ ตามกฎการตัง้ ชือ
init_value1, init_value2, …, init_valuen
เป็ นคาที
่ องการก
าหนดให้กับตัวแปรอารเรย
ละ
่ ต
้
่
์ ในแต
์
ตาแหน่ง
ตัวอยาง
เช่น
่
scores[0] แทนคะแนนสอบของสมาชิกลาดับที่ 1 คือ 30
9
scores[1] แทนคะแนนสอบของสมาชิกลาดับที่ 2 คือ 50

กาหนดคาในส
่
่ วนของโปรแกรม โดยกาหนดคาให
่
้แต่
ละตาแหน่งในอารเรย
เช่น
่
์ ์ ตัวอยาง
grade[0] แทนเกรดของสมาชิกลาดับที่ 1 คือ F
grade[1] แทนเกรดของสมาชิกลาดับที่ 2 คือ D
grade[2] แทนเกรดของสมาชิกลาดับที่ 3 คือ A
10

เป็ นเพียงวิธก
ี ารทางานกับอารเรย
์ ์ มีรูปแบบการใช้งาน
ดังนี้
for (int i = 0; i < ArrayName.length; i++) {
statements; // คาสั่ งทีใช้ในรอบของ ArrayName
ตาแหน่งที่ I
};
โดยที่
i
เป็ นตัวแปรทีใ่ ช้ควบคุมจานวนครัง้ ของการวน
ลูป
ArrayName เป็ นชือ
่ ตัวแปรอารเรย
์ ์
length
เป็ นเมธอดทีใ่ ช้หาจานวนสมาชิกของตัว
แปรอารเรย
์ ์
11
statements เป็ นชุดคาสั่ งทีท
่ างานกับตัวแปรอารเรย
์ ์

scores เป็ นตัวแปรอารเรย
์ เก็
์ บคะแนนสอบ ชนิดเป็ น
double มีขนาดเทากั
่ บ 5
scores[0] แทนคะแนนสอบของสมาชิกตาแหน่งที่
scores[1] แทนคะแนนสอบของสมาชิกตาแหน่งที่
scores[2] แทนคะแนนสอบของสมาชิกตาแหน่งที่
scores[3] แทนคะแนนสอบของสมาชิกตาแหน่งที่
scores[4] แทนคะแนนสอบของสมาชิกตาแหน่งที่
1 คือ 15.0
2 คือ 20.0
3 คือ 25.0
4 คือ 18.0
5 คือ 22.0
12
13

ใช้หาจานวนสมาชิกของตัวแปรอารเรย
์ ์ มีรูปแบบการใช้
งานดังนี้
n = arrayName.length;
โดยที่
arrayName
n
arrayName
เป็ นตัวแปรอารเรย
่ องการหาขนาด
้
์ ที
์ ต
เป็ นจานวนสมาชิกในตัวแปรอารเรย
์ ์
14

ใช้เรียงลาดับขอมู
้ ลในตัวแปรอารเรย
้ อยไปมาก มี
์ จากน
์
รูปแบบการใช้งาน ดังนี้
Arrays.sort(arrayName);
โดยที่
arrayName
เป็ นตัวแปรอารเรย
่ องการเรี
ยงลาดับข้อมูล
้
์ ที
์ ต
15

ใช้ค้นหาขอมู
่ องการในตั
วแปรอารเรย
้ ลทีต
้
์ ์ มีรูปแบบการ
ใช้งาน ดังนี้
indexValue = Arrays.binarySearch(arrayName,
value);
โดยที่
arrayName
value
indexValue
เต็มลบ

เป็ นตัวแปรอารเรย
่ องการค
้
้นหาขอมู
้ ล
์ ที
์ ต
เป็ นข้อมูลทีต
่ องการค
นหาในอาร
เรย
้
้
์ ์
เป็ นตาแหน่งของขอมู
่ ้นหาในอารเรย
้ ลทีค
์ ์
ในกรณีทไี่ มพบข
อมู
่
้ ล จะคืนคาเป็
่ นเลขจานวน
ในการคนหาข
อมู
กครัง้
้
้ ล จะต้องเรียงลาดับขอมู
้ ลกอนทุ
่
16

ใช้กาหนดคาข
่ อมู
้ ลให้กับตัวแปรอารเรย
์ ์ มีรูปแบบการใช้
งานดังนี้
Arrays.fill(arrayName, value);
โดยที่
arrayName
value
เป็ นตัวแปรอารเรย
่ องการก
าหนดคาข
้
่ ้อมูล
์ ที
์ ต
เป็ นคาข
่ องการก
าหนดให้อารเรย
่ ้อมูลทีต
้
์ ์
17

ใช้เปรียบเทียบคาข
่ อมู
้ ลในตัวแปรอารเรย
์ ์ มีรูปแบบการ
ใช้งาน ดังนี้
result = Arrays.equals(arrayName_1,
arrayName_2);
โดยที่
arrayName_1
เป็ นตัวแปรอารเรย
่ องการ
้
์ ที
์ ต
เปรียบเทียบขอมู
้ ลตัวที่ 1
arrayName_2
เป็ นตัวแปรอารเรย
่ องการ
้
์ ที
์ ต
เปรียบเทียบขอมู
้ ลตัวที่ 2
result
เป็ นผลลัพธที
ยบเทียบ
้
์ ไ่ ดจากการเปรี
18


การหาคาคะแนนสู
งสุด คะแนนตา่ สุด และคานวณคะแนนเฉลีย
่
่
ในตัวอยางนี
้ สามารถนาไปใช้กับข้อมูลคะแนนสอบ, ข้อมูลส่วนสูง
่
, ข้อมูลน้าหนัก หรือข้อมูลปริมาณน้าฝน เป็ นตน
้
โดยสรางเมธอดเพื
อ
่ หาคาคะแนนสู
งสุด คะแนนตา่ สุด และ
้
่
คานวณคะแนนเฉลีย
่ รวมไวในคลาสเดี
ยวกัน
เพือ
่ ให้คลาสอืน
่
้
สามารถเรียกใช้เมธอดดังกลาวได
ด
มีขน
้ั ตอนดังนี้
่
้ วย
้
 สร้าง Java Class ชือ
่ MaxMinAvg ไว้ในแพคแกจ
ArrayClass ประกอบดวยเมธอด
getmax(), getmin() และ
้
getavg() ซึง่ เขียนโค้ดสรางคลาส
MaxMinAvg ดังนี้
้
19

สร้าง Java Main Class ชือ
่ StudentScore ในแพ็คแกจ
Student เพือ
่ รับขอมู
้ ลคะแนนของนักศึ กษาและเรียกใช้เมธอด
ทีอ
่ ยูในคลาส
MaxMinAvg ดังนี้
่
20
21
package ArrayClass;
public void getdata() {
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
import java.util.Arrays;
do {
public class ProductInfo
{
System.out.print("Enter
product name : ");
public String[] name;
price; int idx;
String double[]
g = scan.nextLine();
public void setdata()
{
idx = Arrays.binarySearch(name,g);
name = newifString[5];
price = new double[5];
(idx < 0)
name[0] = "COKE";
price[0] = 10.75;product
name[1]
= "FANTA";
System.out.println("This
name
is not found");
price[1] = 10.50;
} while (idx < 0);
name[2] = "MAMA";
price[2] = 5.25;
name[3]
System.out.print("Enter
product
units : =");"PEPSI";
price[3] = 10.25;
int u = scan.nextInt();
name[4] = "SPRITE"; price[4] = 11.25;
}
System.out.printf("==================================
public void
showdata() {
========\n");
System.out.printf("%-10s
%10s\n","name","prize");
System.out.println("your
order is "+name[idx]+" "+u+ " units
="
System.out.printf("========================================
+u+" * "+price[idx]+" = "+u*price[idx]+" baht");
==\n");
22
for (int i=0;
i<5; i++)
System.out.printf("==================================


เปรียบไดกั
้ บการนาตัวแปรมาเรียงตอกั
่ นหลายๆ ตัวใน
ลักษณะของตารางขอมู
้ ล
สามารถจาลองตัวอยางตั
วแปรอารเรย
่ ตัวแปร
่
์ ์ 2 มิต ิ ชือ
intEx2 เป็ นตัวแปรชนิดจานวนเต็มทีส
่ ามารถเก็บขอมู
้ ล
จานวนเต็มได้ 15 ตัว ดังนี้



ตัวแปรแถวที่ 1 คอลัมที่ 1 มีคาเท
่ ากั
่ บ 3 ซึง่ สามารถเขียนได้
เป็ น intEx2[0][0] = 3
ตัวแปรแถวที่ 1 คอลัมที่ 2 มีคาเท
่ ากั
่ บ 7 ซึง่ สามารถเขียนได้
เป็ น intEx2[0][1] = 7
23
ตัวแปรแถวที่ 1 คอลัมที่ 5 มีคาเทากับ 1 ซึง่ สามารถเขียนได
dataType [ ][ ] ArrayName;
โดยที่
dataType เป็ นชนิดขอมู
้ ลของตัวแปรอารเรย
์ ์
ทีต
่ ้องการ
ArrayNameเป็ นชือ
่ ตัวแปรอารเรย
์ ์ ซึ่งตัง้ ตามกฎการ
ตัง้ ชือ
่
 ต้องกาหนดขนาดของอารเรย
่ ้องการกอนน
าไปใช้งาน
่
์ ที
์ ต
ในโปรแกรม ดังนี้
ArrayName = new dataType[m][n];
โดยที่
dataType เป็ นชนิดขอมู
้ ลของตัวแปรอารเรย
์ ์
ทีต
่ ้องการ
ArrayNameเป็ นชือ
่ ตัวแปรอารเรย
์ ์ ซึ่งตัง้ ตามกฎการ
24
ตัง้ ชือ
่
totalstd เป็ นตัวแปรทีแ
่ ทนจานวนนักศึ กษาแยกเป็ น 2 คณะ คณะ
ละ 4 ชัน
้ ปี เป็ นอารเรย
่ ข
ี นาด
้ ลเลขจานวนเต็ม ทีม
์ ชนิ
์ ดขอมู
ปี 2
ปี 3
ปี 4
เทากั
มน์ ไดดั
่ บ 2 แถว 4 คอลัคณะ
้ ปีงนี1้
1
200
150
100
120
2
40
38
36
32
จะไดว
้ า่
จานวนนักศึ กษาคณะที่ 1 ชัน
้ ปี 1 เทากั
่ บ 200 คน
จานวนนักศึ กษาคณะที่ 1 ชัน
้ ปี 2 เทากั
่ บ 150 คน
จานวนนักศึ กษาคณะที่ 1 ชัน
้ ปี 3 เทากั
่ บ 100 คน
จานวนนักศึ กษาคณะที่ 1 ชัน
้ ปี 4 เทากั
่ บ 120 คน
จานวนนักศึ กษาคณะที่ 2 ชัน
้ ปี 1 เทากั
่ บ 40 คน
จานวนนักศึ กษาคณะที่ 2 ชัน
้ ปี 2 เทากั
่ บ 38 คน
จานวนนักศึ กษาคณะที่ 2 ชัน
้ ปี 3 เทากั
่ บ 36 คน 25

import java.util.Scanner;
public class ARRAY2D {
public static
void main(String[] args) {
for (i=0;i<2;i++){
int[][] num_std; int[] tfac; int i, j, total = 0;
num_std = new int[2][4]; tfac = new int[2];
System.out.print("=======================
Scanner
scan = new Scanner(System.in);
for (i=0;i<2;i++)
{
=======\n");
System.out.println("Enter
for (j=0;j<4;j++) { total student in Faculty " + (i+1));
tfac[i] = 0;
System.out.println("student
in year " + (j+1)
for (j=0;j<4;j++)
{
+"="+
System.out.print("year
" + (j+1) + " = ");
num_std[i][j]
= scan.nextInt();
num_std[i][j]);
tfac[i] =} tfac[i] + num_std[i][j];
}
System.out.println("student
in faculty
total = total
+ tfac[i];
"+(i+1)+" = "+tfac[i]);
}
}
26
ตัวแปรอารเรย
2 บล็อก (block) 3 แถว (row) 4 คอลัมน์ (column)
สา
์ ขนาด
์
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 1 มีคาเท
่ ากั
่ บ 9 เขียนไดเป็
้ น intEx3[0][0][
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 2 มีคาเท
่ ากั
่ บ 2 เขียนไดเป็
้ น intEx3[0][0][
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 3 มีคาเท
่ ากั
่ บ 1 เขียนไดเป็
้ น intEx3[0][0][
•ตัวแปรบล็อกที่ 1 แถวที่ 2 คอลัมที่ 1 มีคาเท
่ ากั
่ บ 8 เขียนไดเป็
้ น intEx3[0][1][
•ตัวแปรบล็อกที่ 1 แถวที่ 2 คอลัมที่ 2 มีคาเท
่ ากั
่ บ 5 เขียนไดเป็
้ น intEx3[0][1][
•ตัวแปรบล็อกที่ 1 แถวที่ 3 คอลัมที่ 4 มีคาเท
่ ากั
่ บ 7 เขียนไดเป็
้ น intEx3[0][2][
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 1 มีคาเท
่ ากั
่ บ 7 เขียนไดเป็
้ น intEx3[1][0][
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 2 มีคาเท
่ ากั
่ บ 1 เขียนไดเป็
้ น intEx3[1][0][
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 3 มีคาเท
่ ากั
่ บ 4 เขียนไดเป็
้ น intEx3[1][0][
•ตัวแปรบล็อกที่ 2 แถวที่ 2 คอลัมที่ 1 มีคาเท
่ ากั
่ บ 3 เขียนไดเป็
้ น intEx3[1][1][
•ตัวแปรบล็อกที่ 2 แถวที่ 2 คอลัมที่ 2 มีคาเท
่ ากั
่ บ 7 เขียนไดเป็
้ น intEx3[1][1][
27
•ตัวแปรบล็อกที่ 2 แถวที่ 3 คอลัมที่ 4 มีคาเท
่ ากั
่ บ 7 เขียนไดเป็
้ น intEx3[1][2][
dataType [ ][ ][ ] ArrayName;
โดยที่ dataType
เป็ นชนิดขอมู
่ องการ
้ ลของตัวแปรอารเรย
้
์ ที
์ ต
ArrayName เป็ นชือ
่ ตัวแปรอารเรย
์ ์ ซึง่ ตัง้ ตามกฎการตัง้
ชือ
่
 จะต้องกาหนดขนาดของอารเรย
่ องการก
อนน
าไปใช้งานใน
้
่
์ ที
์ ต
โปรแกรม ดังนี้
ArrayName = new dataType[k][n][m];
โดยที่ dataType
เป็ นชนิดขอมู
่ องการ
้ ลของตัวแปรอารเรย
้
์ ที
์ ต
ArrayName เป็ นชือ
่ ตัวแปรอารเรย
่
์ ์ ซึง่ ตัง้ ตามกฎการตัง้ ชือ
k
เป็ นขนาดบล็อกของตัวแปรอารเรย
่ องการ
้
์ ที
์ ต
n
เป็ นขนาดแถวของตัวแปรอารเรย
่ องการ
้
์ ที
์ ต
m
เป็ นขนาดคอลัมนของตั
วแปรอารเรย
่ องการ
้
์
์ ที
์ ต
28


room เป็ นตัวแปรทีแ
่ ทนจานวนจานวนคนทีพ
่ ก
ั แยกตามอาคาร
ชัน
้ และห้อง
สามารถกาหนด room เป็ นอารเรย
่ ช
ี นิดขอมู
้ ลเป็ นเลขจานวน
์ ที
์ ม
เต็ม ทีม
่ ข
ี นาดเทากั
่ บ 2 บล็อก 4 แถว 6 คอลัมน์ ไดดั
้ งนี้ (มี
2 อาคาร อาคารละ 4 ชัน
้ ชัน
้ ละ 6 ห้อง)
room[0][0][0] = 4
คน
room[0][0][1] = 3
คน
room[0][0][2] = 4
คน
room[0][0][3] = 3
คน
room[0][0][4] = 4
คน
room[0][0][5] = 2
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 1 มีผู้พักอาศัย 4
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 2 มีผู้พักอาศัย 3
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 3 มีผู้พักอาศัย 4
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 4 มีผู้พักอาศัย 3
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 5 มีผู้พักอาศัย 4
หมายถึง อาคาร 1 ชัน
้ 1 ห้องที่ 6 มีผู้พักอาศัย 292
public int[][][] inputdata() {
int[][][]rm;
Scanner scan = new Scanner(System.in);
System.out.print("Enter total buildings : "); b = scan.nextInt();
System.out.print("Enter
f = scan.nextInt();
import java.util.Scanner; total floors : ");
class room_info {
System.out.print("Enter
total room : ");
r = scan.nextInt();
b, f, r, total_man, total_avail;
rm public
= newintint[b][f][r];
public voidrm,
showdata()
{
public int get_total(int[][][]
int t) {
for (int
i=0; i<b;
{
int count
= 0; i++)
System.out.printf("Total
people = %d people\n",
forfor
(int(int
j=0;
j++)
i=0;j<f;
i<b;
i++){ {
total_man);
j=0;k<r;
j<f; j++)
forfor
(int(int
k=0;
k++){ {
System.out.printf("Total
room = %d room\n",
for (int k=0; k<r; k++) { total people inavailable
System.out.print("Enter
building " + (i+1) + " floor " + (j+1)
(t)total_avail);
{
+ " room "switch
+case
(k+1)
+
: ");
0 : }if "(rm[i][j][k]
== 0)
int g = scan.nextInt();
count++;
}new Integer(g);
break;
rm[i][j][k] =
class ARRAY3D
{
case 1 public
: if (rm[i][j][k]
!= 0)
}
count
= count+rm[i][j][k];
public
static void main(String[] args) {
}
break;
int[][][]rooms;
}
}
room_info roomdata = new room_info();
return }rm;
}
rooms = roomdata.inputdata();
}
roomdata.checkdata(rooms);
public}return
void count;
checkdata(int[][][]
rm) {
roomdata.showdata();
total_man
= get_total(rm,1);
}
30
total_avail = get_total(rm,0);
}




เป็ นโครงสรางข
อมู
้
้ ลทีใ่ ช้อารเรย
้ ลแบบ
์ จั
์ ดเก็บขอมู
รายการลาดับทีต
่ อเนื
่ ่องกัน
อ้างถึงขอมู
ตาแหน่ง
้ ลในลาดับใดๆ ดวยการระบุ
้
(index) ของข้อมูลทีต
่ ้องการ
รองรับการเก็บขอมู
้ ลประเภทออบเจ็กต ์ ซึ่งเป็ นอารเรย
์ ์
ของ Reference
สามารถขยายขนาดไดเองโดยอั
ตโนมัต ิ ในขณะที่
้
อารเรย
ย
่ นแปลงขนาดของอารเรย
่
์ ไม
์ สามารถเปลี
์ ์
หลังจากทีถ
่ ก
ู สรางขึ
น
้ ได้
้
31

เมธอด size() เป็ นเมธอดหาจานวนสมาชิกทัง้ หมดของ ArrayList
มีรูปแบบการใช้งานดังนี้
n = arrayListName.size();
โดยที่
arrayListName เป็ นชือ
่ ของออบเจ็กต ์ ArrayList ทีต
่ ้องการ
หาจานวนสมาชิก
n เป็ นจานวนสมาชิกใน ArrayList ทีไ่ ดจากคื
นคาของเมธอด
้
่
32

เป็ นเมธอดสาหรับเพิม
่ สมาชิกใน ArrayList
มีรูปแบบการใช้
งานดังนี้
arrayListName.add(objectValue);
โดยที่
arrayListName
เป็ นชือ
่ ของออบเจ็กต ์
ArrayList ทีต
่ ้องการเพิม
่ สมาชิก
objectValue เป็ นข้อมูลทีต
่ องการเพิ
ม
่ ใน ArrayList
้

ผลทีไ่ ดจากใช
่ สมาชิกในตาแหน่ง
้
้เมธอด add จะเป็ นการเพิม
สุดท้ายของ ArrayList
หากตองการเพิ
ม
่ สมาชิกทีต
่ าแหน่งใดๆ ใน ArrayList ให้ระบุ
้
ตาแหน่งทีต
่ องการเพิ
ม
่ สมาชิกไปดวย
้
้
arrayListName.add(index, objectValue);
โดยที่
index
เป็ นตาแหน่งทีต
่ องการเพิ
ม
่ สมาชิก
้

33


เป็ นเมธอดสาหรับหาคาสมาชิ
กใน ArrayList ณ ตาแหน่งที่
่
ต้องการ มีรูปแบบการใช้งานดังนี้
objectValue = arrayListName.get(index);
โดยที่
arrayListName
เป็ นชือ
่ ของออบเจ็กต ์
ArrayList ทีต
่ ้องการหาคาสมาชิ
ก
่
objectValue เป็ นออบเจ็กตที
์ ใ่ ช้รับข้อมูลจากเมธอด
index
เป็ นตาแหน่งทีต
่ องการหาค
าสมาชิ
ก
้
่
สามารถนาขอมู
้ ลประเภทออบเจ็กตนี
้ ลที่
์ ้ ไปแปลงเป็ นชนิดขอมู
ต้องการได้ โดยใช้เมธอดในคลาส Wrapper ไดแก
้ ่ เมธอด
toString(), เมธอดประเภท parseType()
34

เป็ นเมธอดสาหรับลบสมาชิก ณ ตาแหน่งทีต
่ องการออกจาก
้
ArrayList มีรูปแบบการใช้งานดังนี้
arrayListName.remove(index);
โดยที่ arrayListName เป็ นชือ
่ ของออบเจ็กต ์ ArrayList ที่
ต้องการลบสมาชิก
index
เป็ นตาแหน่งทีต
่ องการลบสมาชิ
ก
้
35

เป็ นเมธอดสาหรับหาคาต
่ องการใน
่ าแหน่งของสมาชิกทีต
้
ArrayList มีรูปแบบการใช้งานดังนี้
index = arrayListName.indexOf(objectValue);
โดยที่
arrayListName
เป็ นชือ
่ ของออบเจ็กต ์
ArrayList ทีต
่ ้องการค้นหาตาแหน่งสมาชิก
objectValue เป็ นออบเจ็กตที
่ องการค
้
้นหาใน ArrayList
์ ต
index
เป็ นตัวแปรรับคาต
่ ้นหา
่ าแหน่งของสมาชิกทีค
ใน ArrayList
 ถ้าพบ
เมธอดจะคืนคาเป็
่ นคาต
่ าแหน่งสมาชิกใน
ArrayList
 ถ้าไมพบ
เมธอดจะคืนคาเป็
่
่ นคาเป็
่ นเลขจานวนเต็มลบ
36
Array
ArrayList
37


เป็ นคาสั่ งรวนลูปเพือ
่ เข้าถึงขอมู
าแหน่งในอารเรย
้ ลแตละต
่
์ หรื
์ อ
ArratList
ช่วยป้องกันการอ้างถึงขอมู
้ ลทีเ่ กินขอบเขตของขนาดอารเรย
์ ์
(IndexOutOfBoundsException) เนื่องจากการวนลูปจะเริม
่ ตน
้
ตัง้ แตข
For-each loop
่ อมู
้ ลในตาแหน่งแรกจนถึงตาแหน่งสุดทาย
้
ซึง่ ไมสามารถก
าหนดขอบเขตของการวนลูปตามทีต
่ องการได
่
้
้ มี
รูปแบบการทางาน ดังนี้
for (arrayType arrayValue : arrayName) {
statements;
}
โดยที่ arrayType
เป็ นชนิดขอมู
้ ลของอารเรย
์ หรื
์ อ
ArrayList
arrayValue เป็ นชือ
่ ตัวแปรทีใ่ ช้เขาถึ
้ งขอมู
้ ลในแตละรอบ
่
38
arrayName เป็ นชือ
่ ตัวแปรอารเรย
์ หรื
์ อ ArrayList
39



เป็ นโครงสรางข
่ รางขึ
น
้ สาหรับกาหนดกลุมของค
าคงที
่ โดย
้
้อมูลทีส
้
่
่
ไมต
ท
่ ล
ี ะคา่
่ ้องกาหนดเป็ นคาคงที
่
อาจจะเป็ นชือ
่ คา หรือประโยคทีม
่ ค
ี วามหมาย แตไม
่ สามารถ
่
นามาใช้ในการคานวณได้ เช่น
เกรด มี 2 คา่ คือ S และ U หรือ วันใน 1 สั ปดาห ์ มี 7
วัน เป็ นตน
้
ต้องประกาศอยูภายในคลาส
กอนเข
าเมธอด
main มีรูปแบบการ
่
่
้
ใช้งานดังนี้
enumName { value1, value2,..., valuen}
โดยที่
enumName
เป็ นชือ
่ ตัวแปร enum โดยตัง้ ตามกฎ
การตัง้ ชือ
่
value1, value2, …, valuen
เป็ นคาข
่ ะกาหนดให้ตัว
่ ้อมูลทีจ
40
แปร enum
for (Grade grade: Grade.values()) {
import java.util.Scanner;
if (g.equals(grade.toString()))
{
public class EnumTest
{
switch (grade) {
enum Grade {G, S, U};
case G : msg = "Good";
public static void main(String[] args) {
break;
String msg="Unknown";
case S : msg = "Satisfy";
System.out.print("Grade Level
are :");
break;
for (Grade grade: Grade.values())
case U : msg = "Unsatisfy";
System.out.printf("%2s",grade);
break;
Scanner scan = new} Scanner(System.in);
}
System.out.print("\nEnter
Your Grade : ");
}
String g = scan.nextLine();
System.out.println("Your grade is " + g +"
= " + msg);
}
41
}