Download Slide 1

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
อาร ์เรย ์ (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
}
Related documents