Homework 03 - ทบทวน loop
เราต้องการเขียนโปรแกรมคำนวณเงินในธนาคารขึ้นมา
โดยเริ่มต้นให้หน้าจอออกมาแบบนี้ (ไม่ต้องเหมือนเป๊ะ ทำโดยการ setLayout
ให้ออกมาดูคล้ายๆกันก็ได้ จะได้เสร็จเร็วหน่อย)
Principal คือ เงินต้นที่ฝากธนาคาร
Interest Rate คือ อัตราดอกเบี้ย มีหน่วยเป็นเปอร์เซ็นต์
Years
คือ จำนวนปีที่ฝากธนาคาร (ตรงนี้ใช้ JSpinner เพื่อให้เลื่อนขึ้นลง
และจำกัดปี ให้อยู่ระหว่าง 1 ถัง 10 ปี เท่านั้น เลื่อนไปน้อยกว่า 1
หรือมากกว่า 10 ไม่ได้)
เมื่อเราเติมข้อมูลดังข้างบนไปหมดแล้ว
กด Calculate ช่อง JTextArea ใหญ่ ด้านล่าง
จะแสดงผลออกมาดังตัวอย่างข้างล่างนี้ (ถ้ามีข้อมูลช่อง textfield ไหนว่าง
หรือไม่เป็นตัวเลข Calculate จะไม่ทำอะไร)
จะเห็นว่า
เงินรวมในธนาคารในแต่ละปีจะถูกพิมพ์ออกมา แล้วมี scrollbar ด้วย โดย
scrollbar จะ scroll ไปบรรทัดสุดท้ายเอง
(แต่เดี๋ยวเราก็จับเลื่อนไปมาได้ตามใจ)
ถ้าเราลองใส่ค่าลงใน
JSpinner เลย แล้วกด Calculate ก็ได้เหมือนกัน แต่ต้องเป็นค่าระหว่าง 1
ถึง 10 เท่านั้น ถ้าเป็นค่าอื่นหรือดันเป็นคำอื่น ตัว JSpinner
รับค่านั้นไว้ได้ แต่จะเลื่อนขึ้นลงไม่ได้ (มีเสียงบี๊บเวลาพยายามเลื่อน)
ถ้าพยายามกด Calculate ในตอนนี้ ค่าใน JSpinner
จะกลับมาเป็นค่าที่ใช้ได้ล่าสุด และโปรแกรมก็จะคำนวณไปตามปกติ
นอกจากนี้ ถ้าเราไป focus ที่คอมโพเน้นท์ส่วนอื่น JSpinner ก็จะรีเซ็ตกลับมาเป็นค่าที่ใช้ได้ล่าสุดเหมือนกัน
จงเขียนโปรแกรมนี้ จากเริ่มต้นโดยไม่มีอะไรเลย
พอทำเสร็จแล้ว ทำเป็น executable jar ทั้งสองไฟล์ไว้ แล้ว zip รวมกันส่งมาที่ progmethcp@gmail.com ภายในเที่ยงคืนวันอาทิตย์หลังจากที่ทำแล็บ 03 โดยในเมล์ subject ต้องเขียนเป็น studentId_hw03_secNumber และชื่อไฟล์จะต้องเป็น studentId_hw03_secNumber.zip ตัวอย่างเช่น 5032117621_hw03_1.zip
studentID คือเลขประจำตัวนิสิต
secNumber คือเบอร์ตอนเรียน
ไกด์
- ตอนที่เรา
new JSpinner ขึ้นมา อาจต้องเรียกใช้ new SpinnerNumberModel( .. . .. ..
.) เป็นพารามิเตอร์ของ new JSpinner เพื่อเซ็ต range ของตัวเลขให้เรียบร้อย
- ในการสร้าง
scrollbar ของ JTextArea นั้น เราทำได้โดยการ สร้าง Text area object
ขึ้นมาให้เรียบร้อยก่อน แล้วจึงสร้าง JScrollPane โดยเอา JTextArea
มาเป็นพารามิเตอร์ของคอนสตรัคเตอร์มัน
- การดึงค่าจาก JSpinner ออกมา อาจต้องมีการแปลงค่านิดหน่อย
- สูตรการคำนวณเงิน คือ เงิน ณ ปี หนึ่งๆ = p(1+r)n
โดย p คือ เงินต้น r คืออัตราดอกเบี้ย หาร 100 แล้ว
ส่วน n คือ จำนวนปี ใช้ เมธอด Math.power คำนวณยกกำลังได้
- สตริงใน JTextArea นั้น มีแค่สตริงเดียวนะ ถ้าจะพิมพ์หลายๆบรรทัด ต้องใช้วิธีต่อสตริง ลองไปดูเมธอด append ของ JTextArea ดู