WEEK5-2: 14 SEP 2017 Input / Output Selection Statement
การรับข้อมูลชนิดข้อความด้วยคลาส Scanner รับข้อมูลชนิดของข้อมูลเป็นข้อความหรือตัวเลขก็ได้ การใช้งานคลาส Scanner ต้องสร้างออบเจ็กต์จากคลาส Scanner ก่อน จะต้อง import แพ็คเกจ java.util.Scanner และประกาศออบเจ็กต์ตามรูปแบบ ดังนี้ Scanner sn = new Scanner(System.in); โดยที่ sn เป็นชื่อออบเจกต์ที่สร้างจากคลาส Scanner System.in เป็นช่องทางการนำเข้าข้อมูลมาตรฐาน หมายถึง การอ่านข้อมูลจากแป้นพิมพ์
เมธอดของคลาส Scanner nextInt() สำหรับรับข้อมูลประเภทเลขจำนวนเต็ม nextFloat() สำหรับรับข้อมูลประเภทเลขจำนวนทศนิยมชนิด float nextDouble() สำหรับรับข้อมูลประเภทเลขจำนวนทศนิยมชนิด double nextLine() สำหรับรับข้อมูลประเภทข้อความ
การรับผลข้อมูลด้วยคลาส JOptionPane (1) ใช้เมธอด showInputDialog() มีรูปแบบการใช้งาน ดังนี้ String data = JOptionPane.showInputDialog(Parent_Window, Message, Title, Type); โดยที่ Parent_Window เป็นชื่อของ parent window ที่ต้องการแสดงผล ถ้าค่าเป็น null จะแสดงไดอะล็อกบ็อกซ์กลางหน้าจอ Message เป็นข้อความที่ต้องการแสดงในไดอะล็อกบ็อกซ์ Title เป็นข้อความที่ปรากฏในส่วนของ Title bar ของไดอะล็อกบ็อกซ์ Type เป็นชนิดของไดอะล็อกบ็อกซ์ ซึ่งจะถูกกำหนดโดยค่าคงที่ต่อไปนี้
การรับผลข้อมูลด้วยคลาส JOptionPane (2) Type เป็นชนิดของไดอะล็อกบ็อกซ์ ซึ่งจะถูกกำหนดโดยค่าคงที่ต่อไปนี้ ERROR_MESSAGE เป็นการแสดงข้อผิดพลาด และแสดงสัญลักษณ์ INFORMATION_MESSAGE เป็นการแสดงข้อความทั่วไป และแสดงสัญลักษณ์ PLAIN_MESSAGE เป็นการแสดงข้อความทั่วไป โดยไม่มีการแสดงสัญลักษณ์ QUESTION_MESSAGE เป็นการแสดงในลักษณะคำถาม และแสดงสัญลักษณ์ WARNING_MESSAGE เป็นการแสดงในลักษณะแจ้งเตือน และแสดงสัญลักษณ์ ในกรณีที่ไม่มีการกำหนดค่าในส่วนของ Title และ Type Title จะถูกกำหนดเป็น “Input” Type จะถูกกำหนดเป็น QUESTION _MESSAGE
ตัวอย่างการทำงานของเมธอด showInputDialog()
การแสดงผลข้อมูลด้วยเมธอด printlnหรือ print() รูปแบบการใช้งาน System.out.println(argument1 + argument2 + ... + argumentn) หรือ System.out.print(argument1 + argument2 + ... + argumentn) โดยที่ argument1, argument2, argumentn เป็นข้อมูลที่ต้องการแสดงผล อาจจะเป็นข้อความ ตัวแปร หรือนิพจน์ ซึ่งสามารถเขียนต่อกันได้ โดยใช้เครื่องหมาย “+”
ข้อแตกต่างระหว่างเมธอด println() และ print()
การแสดงผลข้อมูลด้วยคลาส JOptionPane (1) ใช้เมธอด showMessageDialog() มีรูปแบบการใช้งาน ดังนี้ JOptionPane.showMessageDialog(Parent_Window,Message, Title,Type); โดยที่ Parent_Window เป็นชื่อของ parent window ที่ต้องการแสดงผล ถ้าค่าเป็น null จะแสดงไดอะล็อกบ็อกซ์กลางหน้าจอ Message เป็นข้อความที่ต้องการแสดงในไดอะล็อกบ็อกซ์ Title เป็นข้อความที่ปรากฏในส่วนของ Title bar ของไดอะล็อกบ็อกซ์ Type เป็นชนิดของไดอะล็อกบ็อกซ์ ซึ่งจะถูกกำหนดโดยค่าคงที่ต่อไปนี้
การแสดงผลข้อมูลด้วยคลาส JOptionPane (2) Type เป็นชนิดของไดอะล็อกบ็อกซ์ ซึ่งจะถูกกำหนดโดยค่าคงที่ต่อไปนี้ ERROR_MESSAGE เป็นการแสดงข้อผิดพลาด และแสดงสัญลักษณ์ INFORMATION_MESSAGE เป็นการแสดงข้อความทั่วไป และแสดงสัญลักษณ์ PLAIN_MESSAGE เป็นการแสดงข้อความทั่วไป โดยไม่มีการแสดงสัญลักษณ์ QUESTION_MESSAGE เป็นการแสดงในลักษณะคำถาม และแสดงสัญลักษณ์ WARNING_MESSAGE เป็นการแสดงในลักษณะแจ้งเตือน และแสดงสัญลักษณ์ ในกรณีที่ไม่มีการกำหนดค่าในส่วนของ Title และ Type Title จะถูกกำหนดเป็น “Message” Type จะถูกกำหนดเป็น INFORMATION_MESSAGE
ตัวอย่างการทำงานของเมธอด showMessageDialog()
การจัดรูปแบบการแสดงผลด้วยคลาส DecimalFormat DecimalFormatdf= new DecimalFormat(argument); String str= df.format(payment); โดยที่ argument เป็นรูปแบบการแสดงผลที่ต้องการ ประกอบด้วย 0 แทนตัวเลข 0 ในกรณีที่ต้องการให้แสดงตัวเลข “#” แทนตัวเลขใดๆ ที่ไม่ใช่ 0 ในกรณีที่เป็นเลข 0 จะไม่แสดงผล “,” ให้แสดงผลโดยมีเครื่องหมาย “,” เป็นตัวคั่นในหลักพัน df เป็นชื่อออบเจ็กต์ของคลาสที่สร้างขึ้น str เป็นชื่อตัวแปรที่ใช้รับค่าที่กำหนดรูปแบบ
ตัวอย่างการใช้งานเมธอด format()
คำสั่งแบบมีทางเลือก (Selection Control Statement) มีการตรวจสอบเงื่อนไขของคำสั่งก่อนทำงาน เพื่อตัดสินใจ เลือกทิศทางการทำงานของโปรแกรม จะข้ามการทำงานของบางชุดคำสั่งไป มี 4 คำสั่งคือ คำสั่ง if คำสั่ง if…else คำสั่ง nested if คำสั่ง switch
คำสั่ง if ควบคุมให้โปรแกรมตัดสินใจทำงานหรือไม่ทำงานในชุดคำสั่งที่กำหนด ตรวจสอบจากนิพจน์ที่กำหนดว่าเป็นจริงหรือเท็จ ถ้านิพจน์ เป็นจริง (true) โปรแกรมจะทำงานที่ชุดคำสั่งที่อยู่ภายใต้คำสั่ง if ถ้านิพจน์ เป็นเท็จ (false) โปรแกรมจะข้ามไปทำงานที่คำสั่งต่อไปทันที มีรูปแบบการทำงานดังนี้ if (boolean_expression) { statements; } โดยที่ boolean_expression เป็นนิพจน์เงื่อนไข ซึ่งมีผลการตรวจสอบเป็น true หรือ false statements เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไขที่กำหนดให้เป็น true
โปรแกรมการใช้คำสั่ง if โปรแกรมคำนวณคะแนนร้อยละ เมื่อกดเลข 1 บนแป้นพิมพ์
คำสั่ง if_else ควบคุมให้โปรแกรมเลือกทำงานในชุดคำสั่งใดชุดคำสั่งหนึ่งจาก 2 ทางเลือก ตรวจสอบจากนิพจน์ที่กำหนดว่าเป็นจริงหรือเท็จ ถ้านิพจน์ เป็นจริง (true) โปรแกรมจะทำงานที่ชุดคำสั่งที่อยู่ภายใต้คำสั่ง if ถ้านิพจน์ เป็นเท็จ (false)โปรแกรมจะทำงานที่ชุดคำสั่งที่อยู่ภายใต้คำสั่ง else มีรูปแบบการทำงานดังนี้ if (boolean_expression) { statement_1; } else { statement_2; โดยที่ boolean_expression เป็นนิพจน์เงื่อนไข ซึ่งมีผลการตรวจสอบเป็น true หรือ false statements_1 เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไขที่กำหนดให้เป็น true statements_2 เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไขที่กำหนดให้เป็น false
โปรแกรมการใช้คำสั่ง if_else โปรแกรมตรวจสอบอายุเกษียณราชการของข้าราชการ
คำสั่ง nested if หรือ if…else if ควบคุมให้โปรแกรมเลือกทำงานในชุดคำสั่งใดชุดคำสั่งหนึ่งจากหลายทางเลือก แต่ละทางเลือกจะมีการกำหนดนิพจน์เงื่อนไขเพื่อให้โปรแกรมตรวจสอบนิพจน์ หากพบว่าทางเลือกไหนมีนิพจน์เป็นจริง (true) ก็จะทำงานที่ชุดคำสั่งภายในทางเลือกนั้น โดยไม่พิจารณาทางเลือกอื่นที่ยังไม่ได้ทำการตรวจสอบอีก มีรูปแบบการทำงาน ดังนี้ if (boolean_expression_1) { statement_1; } else if (boolean_expression_2) { statement_2; else { statement_n; โดยที่ boolean_expression_1, boolean_expression_2 เป็นนิพจน์เงื่อนไขทางตรรกศาสตร์ statements_1 เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไข ของ boolean_expression_1 เป็น true statements_2 เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไข ของ boolean_expression_2 เป็น true statements_n เป็นชุดของคำสั่งที่จะทำงานเมื่อเงื่อนไขที่กำหนดให้ ทั้งหมด เป็น false
โปรแกรมการใช้คำสั่ง nested if โปรแกรมตรวจสอบการเรียนครบตามหลักสูตรจากจำนวนหน่วยกิต วิชาเอกบังคับและวิชาเอกเลือก
คำสั่ง switch statement ควบคุมให้โปรแกรมเลือกทำงานในชุดคำสั่งใดชุดคำสั่งหนึ่งจากหลายทางเลือก แต่ละทางเลือกจะมีการกำหนดเงื่อนไขของแต่ละทาง โดยตรวจสอบเงื่อนไขแต่ละทางเลือก หากพบว่าทางเลือกใดมีเงื่อนไงเป็นจริง (true) จะทำงานที่ชุดคำสั่งภายในทางเลือกนั้น โดยไม่พิจารณาทางเลือกอื่นที่ยังไม่ตรวจสอบอีก มีรูปแบบการทำงานดังนี้ switch (expression) { case list_value_1: statement_1; break; case list_value_2: statement_2; case list_value_n: statement_n; default : statement; } โดยที่ expression เป็นนิพจน์ที่ต้องตรวจสอบค่าว่าตรงกับ list_value ใด เพื่อจะได้ทำงานตามชุดคำสั่งภายใต้ list_value นั้น list_value เป็นค่าข้อมูลที่ใช้ตรวจสอบกับ expression statement_n เป็นชุดของคำสั่งที่จะทำงานเมื่อ list_value นั้น มีค่าเท่ากับ expression statement เป็นชุดของคำสั่งที่จะทำงานเมื่อไม่มี list_value ใด มีค่าเท่ากับ expression
โปรแกรมการใช้คำสั่ง switch โปรแกรมตรวจสอบการดำเนินการกับตัวเลข 2 ค่าให้ตรงกับตัวดำเนินการที่เลือก import java.util.Scanner; public class Switch_Test { public static void main(String args[]) { System.out.println("Main menu"); System.out.println("1.Add"); System.out.println("2.Subtract"); System.out.println("3.Multiply"); System.out.println("4.Divide"); System.out.print("Press 1,2,3 or 4 >>> "); Scanner scan = new Scanner(System.in); int key = scan.nextInt(); System.out.print("enter first number >>> "); float a = scan.nextFloat(); System.out.print("enter seceond number >>> "); float b = scan.nextFloat(); switch (key) { case 1: System.out.println("result of" + a + "+" + b + "=" + (a + b)); break; case 2: System.out.println("result of" + a + "-" + b + "=" + (a - b)); case 3: System.out.println("result of" + a + "*" + b + "=" + (a * b)); case 4: System.out.println("result of" + a + "/" + b + "=" + (a / b)); default: System.out.println("Unknown Operator !!!"); } System.out.println("Good Bye !!! ");