Array & String
สรุปเนื้อหาที่เรียนในห้อง
• Array
จาวามอง array เป็น object โดย array จะเป็นข้อมูลชนิดอ้างอิง
การประกาศตัวแปรแถวลำดับ
1. การประกาศตัวแปร พร้อมกำหนดค่าเริ่มต้น ตัวอย่าง
int a[ ] = { 10,20,30,40 }
2. การประกาศเป็นแถวลำดับว่าง ตัวอย่าง
int a[ ] = new int[4]
หมายเหตุ • การประกาศ array จะสร้างค่าให้โดยอัตโนมัติ เช่น int [ ] ค่าคือ 0
• ถ้าประกาศแล้วไม่ใส่สมาชิก จะเอาไปใช้ไม่ได้
Array 2 มิติ
การประกาศและให้ค่าเริ่มต้น
a[ ][ ] = { {10,100,1000} , {20,200,2000} }
ตัวอย่างโปรแกรมที่ใช้ array 2 มิติ ที่ได้ทำในห้อง

ตัวอย่างการรันโปรแกรม

อธิบายโปรแกรม
โจทย์ให้รับข้อมูลนักเรียนมา 5 คน โดยแต่ละคนกรอกคะแนนคนละ 3 ส่วน เราจึงกำหนดตัวแปรเป็น array 2 มิติ
เพื่อรับข้อมูลทั้งสองค่านี้ และมีการวน loop เพื่อรับค่าข้อมูลนักเรียน พร้อมทั้งเก็บผลรวมของคะแนนแต่ละส่วนด้วย
จากนั้นก็ให้แสดงผลข้อมูลของนักเรียนแต่ละคนพร้อมทั้งคะแนนทั้ง 3 ส่วน ที่ได้จากการกรอกข้อมูล โดยอาศัยการวน loop
เพื่อแสดงผล แล้วจึงคิดหาค่าเฉลี่ยของคะแนน และแสดงผลค่าเฉลี่ย และผลรวมคะแนนออกมา
• String 
การประกาศข้อมูลของ String
String s1 = new String("Hello world!");
Method ที่เกี่ยวข้องกับ String
1. length(); หาขนาดหรือความยาวของ String
2. indexof(); หาตำแหน่งของสมาชิกใน String ตัวอย่างเช่น
s1.indexOf(o) = 4 หมายความว่าตำแหน่งแรกจากทางซ้ายมือที่พบตัว "o"อยู่ในลำดับที่ 4
กรณีถ้าหาค่าไม่พบจะ return ค่า -1
3. lastIndexOf(); หาตำแหน่งของสมาชิก String ลำดับสุดท้าย
s1.lastIndexOf('o',6) is 4 หมายความว่าโปรแกรมจะหาตัวโอตัวสุดท้ายใน s1 ตั้งแต่ลำดับแรก
จนถึงลำดับที่ 6
4. การเชื่อมต่อ String จะใช้ +, += และ String concat (String str) ตัวอย่างเช่น
s1.concat(s2); โปรแกรมจะนำข้อความจาก s2 มาต่อเข้ากับ s1
5. substring(); หา sub string ที่เราเลือกเป็นต้นไปจนถึงตัวสุดท้าย ตัวอย่างเช่น
s1.substring(6); จะหา substring ตั้งแต่ตัวที่ 6 เป็นต้นไป จนถึงตัวสุดท้าย
6. replace String เป็นการเปลี่ยนอักขระบางตัวที่ต้องการ โดยไม่ได้ทำให้ตำแหน่งนั้นเปลี่ยนไป ตัวอย่างเช่น
String s2 = s1.replace('o' , 'e'); จะเปลี่ยนจากอักขระ o ในข้อความเป็น e
7. Trim a string เป็นการตัดช่องว่างออก
8. การเปรียบเทียบ String
- boolean equals(String str) จะเปรียบเทียบ String ออกมาเป็นค่า true และ false
ตัวอย่างการใช้ s1.equals("Hello world!") ถ้า String ที่ต้องการเปรียบเทียบมีค่า
เท่ากัน จะแสดงค่าออกมาเป็น true แต่ถ้าไม่เท่ากันแสดงค่า false
- compareTo(); เปรียบเทียบ ถ้าค่าเท่ากัน return ค่า 0 ถ้าตัวตั้งน้อยกว่าค่าออกมาเป็น -1
แต่ถ้าตัวตั้งมากกว่าจะ return ค่าเป็น 1

โจทย์การบ้าน
1. เขียนโปรแกรมใช้งานแถวลำดับ เพื่อใช้ประมวลผลข้อมูลนักเรียนไม่เกิน 100 คน โดยมีรายละเอียดดังนี้
1.1 กำหนดจำนวนนักเรียนที่จะกรอกคะแนน
1.2 รับข้อมูลชื่อ นามสกุล
1.3 รับคะแนน 3 ครั้ง
1.4 แสดงผลข้อมูล ชื่อ สกุล คะแนนทั้ง 3 ครั้ง
1.5 หาคะแนนรวม สูงสุด ต่ำสุด
โปรแกรมที่ได้คือ


ผลการรันโปรแกรม
หลังจากกรอกข้อมูลจำนวนนักเรียน แล้วถ้ากรอกตามจำนวนที่ถูกต้องคือ 1-100 โปรแกรมจะทำงานในขั้นต่อไป
คือให้เรากรอกข้อมูลนักเรียน ได้แก่ ชื่อ นามสกุล และคะแนน 3 ส่วน จนครบตามจำนวนนักเรียนที่ต้องการ หลังจากนั้น
โปรแกรมจะแสดงผลการกรอกข้อมูล และแสดงผลรวมของคะแนนทั้ง 3 ส่วน รวมทั้งการหาค่า max และ min ดังนี้

แต่ถ้ากรอกจำนวนนักเรียนผิด โปรแกรมจะแจ้งว่า คุณใส่จำนวนนักเรียนผิดไป และจะไม่ทำงานต่อ ดังนี้

2. เขียนโปรแกรมเพื่อรับค่าทางคีย์บอร์ดเข้าในแถวลำดับ 3x3 จำนวน 2 ชุด แล้วนำข้อมูลทั้งสองชุดมาบวกกัน
และเก็บไว้ในแถวลำดับชุดที่ 3 สุดท้ายให้เอาข้อมูลในแถวลำดับแต่ละตัวมาแสดงผล
โปรแกรมที่ได้คือ


ผลการรันโปรแกรม
โปรแกรมจะให้กรอกตัวเลขลงในตารางขนาด 3x3 ตารางที่ 1 และตารางที่ 2 จนครบทุกช่อง
หลังจากนั้นจะแสดงผลลัพธ์ คือ ตารางที่ 1 และตารางที่ 2 ที่เราได้กรอกข้อมูลไป รวมทั้งตารางแสดง
ผลรวมของตารางที่ 1 และ2 ด้วย โดยผลรวมนี้จะเป็นผลรวมที่เกิดจากแต่ละลำดับมาบวกกัน ดังนี้

