Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
อาร ์เรย ์ (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
array)
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
่ องการกาหนดให้กบ
เป็ นค่าทีต้
ั ตวั แปรอาร ์เรย ์ในแต่ละ
ตาแหน่ ง
ตัวอย่าง เช่น
9
scores[0] แทนคะแนนสอบของสมาชิกลาดับที่ 1 คือ 30
กาหนดค่าในส่วนของโปรแกรม โดยกาหนดค่าให้แต่
ละตาแหน่ งในอาร ์เรย ์ ตัวอย่าง เช่น
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] แทนคะแนนสอบของสมาชิกตาแหน่ งที่ 1 คือ 15.0
scores[1] แทนคะแนนสอบของสมาชิกตาแหน่ งที่ 2 คือ 20.0
scores[2] แทนคะแนนสอบของสมาชิกตาแหน่ งที่ 3 คือ 25.0
scores[3] แทนคะแนนสอบของสมาชิกตาแหน่ งที่ 4 คือ 18.0
scores[4] แทนคะแนนสอบของสมาชิกตาแหน่ งที่ 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
่ ด และคานวณคะแนนเฉลียใน
่
การหาค่าคะแนนสู งสุด คะแนนตาสุ
ต ัวอย่างนี ้ สามารถนาไปใช้กบ
ั ข้อมู ลคะแนนสอบ, ข้อมู ลส่วนสู ง,
ข้อมู ลน้ าหนัก หรือข้อมู ลปริมาณน้ าฝน เป็ นต้น
่
่ ด และ
โดยสร ้างเมธอดเพือหาค่
าคะแนนสู งสุด คะแนนตาสุ
่ รวมไว้ในคลาสเดียวกัน เพือให้
่
่
คานวณคะแนนเฉลีย
คลาสอืน
้ั
สามารถเรียกใช้เมธอดด ังกล่าวได้ดว้ ย มีขนตอนด
งั นี ้
่ MaxMinAvg ไว้ในแพคแกจ
สร ้าง Java Class ชือ
ArrayClass ประกอบด้วยเมธอด getmax(), getmin() และ
่ ยนโค้ดสร ้างคลาส MaxMinAvg ดงั นี ้
getavg() ซึงเขี
19
่ StudentScore ในแพ็คแกจ
สร ้าง Java Main Class ชือ
่ ับข้อมู ลคะแนนของนักศึกษาและเรียกใช้เมธอด
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[]String
name;gdouble[]
price; int idx;
= 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] =System.out.print("Enter
"MAMA"; price[2] = 5.25;
name[3]
= "PEPSI";
product
units : ");
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 (intSystem.out.printf("===========================
i=0; i<5; i++)
เปรียบได้ก ับการนาตวั แปรมาเรียงต่อกน
ั หลายๆ ตัวใน
ลักษณะของตารางข้อมู ล
่ วแปร
สามารถจาลองตัวอย่างตัวแปรอาร ์เรย ์ 2 มิต ิ ชือตั
่
intEx2 เป็ นตัวแปรชนิ ดจานวนเต็มทีสามารถเก็
บข้อมู ล
จานวนเต็มได้ 15 ตัว ดังนี ้
่
ต ัวแปรแถวที่ 1 คอลัมที่ 1 มีคา
่ เท่ากับ 3 ซึงสามารถเขี
ยนได้
เป็ น intEx2[0][0] = 3
่
ต ัวแปรแถวที่ 1 คอลัมที่ 2 มีคา
่ เท่ากับ 7 ซึงสามารถเขี
ยนได้
เป็ น intEx2[0][1] = 7
่
ต ัวแปรแถวที่ 1 คอลัมที่ 5 มีคา
่ เท่ากับ 1 ซึงสามารถเขี
ยนได้23
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 เท่ากับ 200 คน
จานวนนักศึกษาคณะที่ 1 ชนปี
้ั 2 เท่ากับ 150 คน
จานวนนักศึกษาคณะที่ 1 ชนปี
้ั 3 เท่ากับ 100 คน
จานวนนักศึกษาคณะที่ 1 ชนปี
้ั 4 เท่ากับ 120 คน
จานวนนักศึกษาคณะที่ 1 ชนปี
้ั 1 เท่ากับ 40 คน
จานวนนักศึกษาคณะที่ 2 ชนปี
้ั 2 เท่ากับ 38 คน
จานวนนักศึกษาคณะที่ 2 ชนปี
้ั 3 เท่ากับ 36 คน
25
จานวนนักศึกษาคณะที่ 2 ชนปี
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));
System.out.println("student in year " +
tfac[i] = 0;
(j+1) + " = " +
for (j=0;j<4;j++)
{
System.out.print("year
num_std[i][j]); " + (j+1) + " = ");
num_std[i][j]
= scan.nextInt();
}
tfac[i] = tfac[i] + num_std[i][j];
System.out.println("student in faculty
}
= "+tfac[i]);
total"+(i+1)+"
= total + tfac[i];
}
}
26
ตัวแปรอาร ์เรย ์ขนาด 2 บล็อก (block) 3 แถว (row) 4 คอลัมน์ (column) สามาร
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 1 มีคา
่ เท่ากับ 9 เขียนได้เป็ น intEx3[0][0][0]
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 2 มีคา
่ เท่ากับ 2 เขียนได้เป็ น intEx3[0][0][1]
•ตัวแปรบล็อกที่ 1 แถวที่ 1 คอลัมที่ 3 มีคา
่ เท่ากับ 1 เขียนได้เป็ น intEx3[0][0][2]
•ตัวแปรบล็อกที่ 1 แถวที่ 2 คอลัมที่ 1 มีคา
่ เท่ากับ 8 เขียนได้เป็ น intEx3[0][1][0]
•ตัวแปรบล็อกที่ 1 แถวที่ 2 คอลัมที่ 2 มีคา
่ เท่ากับ 5 เขียนได้เป็ น intEx3[0][1][1]
•ตัวแปรบล็อกที่ 1 แถวที่ 3 คอลัมที่ 4 มีคา
่ เท่ากับ 7 เขียนได้เป็ น intEx3[0][2][3]
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 1 มีคา
่ เท่ากับ 7 เขียนได้เป็ น intEx3[1][0][0]
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 2 มีคา
่ เท่ากับ 1 เขียนได้เป็ น intEx3[1][0][1]
•ตัวแปรบล็อกที่ 2 แถวที่ 1 คอลัมที่ 3 มีคา
่ เท่ากับ 4 เขียนได้เป็ น intEx3[1][0][2]
•ตัวแปรบล็อกที่ 2 แถวที่ 2 คอลัมที่ 1 มีคา
่ เท่ากับ 3 เขียนได้เป็ น intEx3[1][1][0]
•ตัวแปรบล็อกที่ 2 แถวที่ 2 คอลัมที่ 2 มีคา
่ เท่ากับ 7 เขียนได้เป็ น intEx3[1][1][1]
27
•ตัวแปรบล็อกที่ 2 แถวที่ 3 คอลัมที่ 4 มีคา
่ เท่ากับ 7 เขียนได้เป็ น intEx3[1][2][3]
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
room[1][2][5] = 3
room[1][3][3] = 1
้ั 1 ห้องที่ 1 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 4 คน
้ั 1 ห้องที่ 2 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 3 คน
้ั 1 ห้องที่ 3 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 4 คน
้ั 1 ห้องที่ 4 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 3 คน
้ั 1 ห้องที่ 5 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 4 คน
้ั 1 ห้องที่ 6 มีผูพ
หมายถึง อาคาร 1 ชน
้ ก
ั อาศ ัย 2 คน
้ั 3 ห้องที่ 6 มีผูพ
หมายถึง อาคาร 2 ชน
้ ก
ั อาศ ัย 3 คน
้ั 4 ห้องที่ 4 มีผูพ
หมายถึง อาคาร 2 ชน
้ ก
ั อาศ ัย 1 คน
29
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;
rmpublic
= newintint[b][f][r];
public void showdata()
public int get_total(int[][][]
rm, int t) { {
for (int
i=0; i<b;
i++) {
int count
= 0; System.out.printf("Total
people = %d people\n",
forfor
(int
j=0;
(int
i=0;j<f;
i<b;j++)
i++){{
total_man);
(int
j=0;k<r;
j<f; j++)
forfor
(int
k=0;
k++){ {
System.out.printf("Total
available room = %d
for (int k=0; k<r; k++) { total people in
System.out.print("Enter
building " + (i+1) + " floor "
room\n",
total_avail);
switch (t)
{
+ (j+1) + "case
room
(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();
}
} void checkdata(int[][][]
roomdata.checkdata(rooms);
public
rm) {
return count;
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 ทีต้
่ องการค้นหาใน ArrayList
objectValue เป็ นออบเจ็กต ์ทีต้
่ นหา
index
เป็ นตวั แปรร ับค่าตาแหน่ งของสมาชิกทีค้
ใน ArrayList
ถ้าพบ เมธอดจะคืนค่าเป็ นค่าตาแหน่ งสมาชิกใน
ArrayList
ถ้าไม่พบ เมธอดจะคืนค่าเป็ นค่าเป็ นเลขจานวนเต็มลบ
36
Array
ArrayList
37
่
่
เป็ นคาสังรวนลู
ปเพือเข้
าถึงข้อมู ลแต่ละตาแหน่ งในอาร ์เรย ์หรือ
ArratList
่ นขอบเขตของขนาดอาร ์เรย ์
ช่วยป้ องก ันการอ้างถึงข้อมู ลทีเกิ
่ น
(IndexOutOfBoundsException) เนื่ องจากการวนลู ปจะเริมต้
้ั
ตงแต่
ขอ
้ มู ลในตาแหน่ งแรกจนถึงตาแหน่ งสุดท้าย For-each
loop
่ สามารถกาหนดขอบเขตของการวนลู ปตามทีต้
่ องการได้ มี
ซึงไม่
รู ปแบบการทางาน ด ังนี ้
for (arrayType arrayValue : arrayName) {
statements;
}
โดยที่ arrayType เป็ นชนิ ดข้อมู ลของอาร ์เรย ์หรือ ArrayList
่ วั แปรทีใช้
่ เข้าถึงข้อมู ลในแต่ละรอบ
arrayValue เป็ นชือต
่ วั แปรอาร ์เรย ์หรือ ArrayList
38
arrayName เป็ นชือต
39
่ ้างขึนส
้ าหร ับกาหนดกลุ่มของค่าคงที่
เป็ นโครงสร ้างข้อมู ลทีสร
่ ละค่า
โดยไม่ตอ
้ งกาหนดเป็ นค่าคงทีที
่ คา หรือประโยคทีมี
่ ความหมาย แต่ไม่สามารถ
อาจจะเป็ นชือ
นามาใช้ในการคานวณได้ เช่น
เกรด มี 2 ค่า คือ S และ U หรือ วันใน 1 สัปดาห ์ มี 7 วัน เป็ นต้น
ต้องประกาศอยู ่ภายในคลาส ก่อนเข้าเมธอด main มีรูปแบบการ
ใช้งานดงั นี ้
enumName { value1, value2,..., valuen}
โดยที่
่ วั แปร enum โดยตงตามกฎ
้ั
enumName
เป็ นชือต
้ั อ
่
การตงชื
่
value1, value2, …, valuen เป็ นค่าข้อมู ลทีจะก
าหนดให้ต ัว
แปร enum
40
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
break;are :");
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
}