การใช้ if, if else และ if else if ในภาษาจาวา
การใช้ if, if else และ if else if ในภาษาจาวาโดยทั่วไป เป็นการใช้เพื่อให้โปรแกรมตัดสินใจ เหมือนกับ if-then-else ใน Visual Basic, Pascal และ Fortran ถ้าเปรียบเป็นภาษาพูด if ก็แปลตรงตัวว่า ถ้า else ก็คือ ถ้าไม่
มีรูปแบบการใช้ดังนี้
if(condition){ statement 1; statement 2; ... } else{ statement 1; statement 2; ... }
Note. condition คือเงื่อนไงที่ต้องการ statement ก็คือคำสั่งในโปรแกรม อาจประกอบด้วยหลายคำสั่ง ถ้าหากมีคำสั่งมากกว่าหนึ่งให้ใส่วงเล็บปีกกา{} ครอบคำสั่งทั้งหมดไว้ แต่ถ้ามีเพียงคำสั่งเดียวไม่ต้องใส่วงเล็บปีกกาก็ได้ ถ้าหากไม่มีคำสั่งใด ๆ ให้ใส่วงเล็บเปล่า หรือใส่เครื่องหมาย ; ไว้ก็ได้
condition เป็นข้อมูลขนิด boolean ซึ่งต้องเป็นจริงหรือเท็จเท่านั้น ถ้าเป็นจริงจะทำคำสั่งใน if แต่ถ้าเป็นเท็จจะทำในคำสั่ง else เรามาดูตัวอย่างกันดีกว่า
ตัวอย่างที่ 1 โปรแกรมคำนวณเกรด โดยใช้ if
import java.util.Scanner; public class Grade2 { public static void main(String args[]){ System.out.print("Input Score : "); Scanner in = new Scanner(System.in); int score = in.nextInt(); if(score < 50) System.out.println("Your Score : F"); if(score >= 50 && score < 60) System.out.println("Your Score : D"); if(score >= 60 && score < 70) System.out.println("Your Score : C"); if(score >= 70 && score < 80) System.out.println("Your Score : B"); if(score >= 80) System.out.println("Your Score : A"); } }
โปรแกรมนี้รับค่าคะแนนมาจากแป้นพิมพ์ เราใช้ if เพื่อตรวจสอบไปแต่ละเกรด จะเห็นว่าเราใช้แต่ if ตามหลัง if มีแค่คำสั่งเดียว ไม่ต้องใส่วงเล็บปีกกาครอบก็ได้ โปรแกรมนี้จะตรวจสอบทุก if นั่นคือตรวจสอบว่าน้อยกว่า 50 ต่อไป ก็ มากกว่า 50 และ น้อยกว่า 60 หรือไม่ และตรวจสอบไปเรื่อย ๆ ทุก ๆ เกรดถ้าคะแนน น้อยกว่า 50 แล้วปริ้น F ออกมา แต่ก็ต้องตรวจสอบว่าเป็นเกรด D C B หรือ A หรือไม่
ตัวอย่างที่ 2 โปรแกรมคำนวณเกรด โดยใช้ if else
import java.util.Scanner; public class Grade3 { public static void main(String args[]){ System.out.print("Input Score : "); Scanner in = new Scanner(System.in); int score = in.nextInt(); if(score < 50) System.out.println("Your score : F"); else{ if(score < 60) System.out.println("Your score : D"); else{ if(score < 70) System.out.println("Your score : C"); else{ if(score < 80) System.out.println("Your score : B"); else System.out.println("Your score : A"); } } } } }
โปรแกรมนี้เราใช้ if else ตอนแรกก็ตรวจสอบว่าน้อยกว่า 50 หรือไม่ ถ้าใช่ ก็ปริ้น F ออกมา แต่ถ้าไม่ใช่ก็ไปทำที่ else ใน else ก็ไปตรวจสอบ if ใน else อีกที หรือที่เรียกกันว่า if ซ้อน if นั่นเอง จาก if ซ้อน if เราก็สามารถลดรูปกลายเป็นโปรแกรมที่สามนั่นคือ if else if
ตัวอย่างที่ 3 โปรแกรมคำนวณเกรด โดยใช้ if else if
import java.util.Scanner; public class Grade { public static void main(String args[]){ System.out.print("Input Score : "); Scanner in = new Scanner(System.in); int score = in.nextInt(); if(score < 50) System.out.println("Your Grade : F"); else if(score < 60) System.out.println("Your Grade : D"); else if(score < 70) System.out.println("Your Grade : C"); else if(score < 80) System.out.println("Your Grade : B"); else System.out.println("Your Grade : A"); } }
โปรแกรมนี้เป็นการใช้ if else if เพื่อตรวจสอบน้อยกว่า 50 หรือไม่ถ้าไม่ก็ไปตรวจอันที่สอง ถ้าน้อยกว่า 60 ก็ทำการปริ้น D ออกมา แล้วจบโปรแกรม ต่างจากโปรแกรมแรกที่ต้องตรวจทุก if แม้จะปริ้นเกรดออกมาแล้ว และเป็นการลดรูปจากโปรแกรมที่สอง จากการใช้ if ซ้อนกันหลาย ๆ ครั้ง ทำให้โปรแกรมดูง่ายขึ้น
หมายเหตุ. โปรแกรมข้างบนทั้งสามนี้ มี input กับ output เหมือนกัน
Output ที่ได้คือ
Input Score : 70
Your Grade : B
Input Score : 53
Your Grade : D
Comparison Operators ตัวอย่างข้างบน เราใช้เครื่องหมาย < ซึ่งหมายถึง น้อยกว่า ซึ่งยังมีอีกหลายเครื่องหมายที่ต้องใช้ในการตัดสินใจสำหรับการเขียนโปรแกรม เรามาดูกันเลยว่ามีอะไรบ้าง

เครื่องหมายเหล่านี้ เป็นเครื่องหมายสำหรับคืนค่า boolean
Combining Conditions เมื่อคุณต้องการรวม condition ตั้งแต่สองอันขึ้นไป ภายใน if อันเดียว สามารถเชื่อม condition เหล่านั้นได้โดยใช้สัญลักษณ์ดังแสดงข้างล่าง
