คำสั่งเลือกเงื่อนไข

17 August 2016

ในบทนี้ คุณจะได้เรียนรู้วิธีการควบคุมการทำงานของโปรแกรมโดยคำสั่งเงื่อนไขในภาษา Java เพื่อควบคุมโปรแกรมให้ทำงานตามที่ต้องการ โดยคำสั่งเงื่อนไขในภาษา Java ที่คุณจะเรียนรู้ในบทนี้จะมีด้วยกันดังนี้

  • คำสั่ง if
  • คำสั่ง if else
  • คำสั่ง else-if
  • คำสั่ง switch
  • Ternary Operator

เราจะเริ่มต้นกับคำสั่งแรกที่พื้นฐานและง่ายที่สุดคือ If statement

คำสั่ง If

ในบางครั้ง โปรแกรมของเราจะต้องทำการตามเงื่อนไขต่างๆ โดยเราสามารถใช้คำสั่ง If เพื่อใช้ในการเปรียบเทียบเงือนไขเพื่อให้โปรแกรมทำงานได้ มันมีรูปแบบการใช้งานดังนี้

if (expression) {
    statements
}

รูปแบบด้านบนเป็นวิธีการใช้คำสั่ง If โดยในบล็อคของคำสั่ง If นั้นจะทำงานก็ต่อเมื่อ expression เป็น true เท่านั้น ถ้าหากไม่ใช้ โปรแกรมจะข้ามบล็อคคำสั่งนี้ไป มาดูตัวอย่างการใช้งาน

public class IfStatement {
    public static void main(String[] args) {    
        String username = "mateo";
        String password = "1234";

        if (username == "mateo") {
            System.out.println("Your username has a permission.");
        }

        if (username == "mateo" && password == "1234") {
            System.out.println("You're now logged in.");
        }     
    }
}

จากตัวอยางข้างบน เป็นการใช้คำสั่ง If เพื่อตรวจสอบชื่อผู้ใช้และรหัสผ่านในการเข้าสู่ระบบ ในบล็อคคำสั่ง If อันแรกจะตรวจสอบว่า username มีสิทธิ์ในการที่จะเข้าระบบหรือไม่ และ (username == "mateo") ของมัน และบล็อคคำสั่ง If อันที่สอง เป็นการตรวจสอบการเข้าระบบ โดยมี expression ย่อยสองอัน ที่เชื่อมกันด้วยตัวดำเนินการ And นั่นหมายคงามว่าทั้งสองต้องเป็นจริง

Your username has a permission.
You're now logged in.

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

คำสั่ง If else

หลังจากที่คุณรู้จักวิธีการใช้งานคำสั่ง If แล้ว คำสั่งหนึ่งที่มันต้องใช้ร่วมกันคือคำสั่ง Else clause เป็นคำสั่งสำหรับไว้ให้โปรแกรมทำงานเมื่อเงื่อนไขในทำสั่ง If เป็นเท็จ ตัวอย่างการใช้คำสั่ง If-Else

public class IfElseStatement {
    public static void main(String[] args) {    
        String username = "mateo";
        String password = "abcd";

        if (username == "mateo" && password == "1234") {
            System.out.println("You're now logged in.");
        } else {
            System.out.println("Sorry, your usename or password is incorrect.");
        }  
    }
}

ในตอนนี้ เราได้มีบล็อคของคำสั่ง Else มารองรับในกรณีที่เงื่อนไขในคำสั่ง If ไม่เป็นจริง และจากโปรแกรม เราได้เปลี่ยนให้ password มีค่าเป็น abcd เพื่อทดสอบโปรแกรม และได้ผลลัพธ์ข้างล่างนี้

Sorry, your username or password is incorrect.

จะเห็นว่าโปรแกรมจะทำงานในบล็อคคำสั่งของ Else เพราะว่า expression ของ If ไม่เป็นจริง

คำสั่ง Else-If

นอกจากนี้ คุณยังสามารถใช้คำสั่ง Else-If ในกรณีที่เงื่อนไขของคุณมีหลายเงือนไข และการทำงานในแต่ละอย่างแตกต่างกัน เราจะยกตัวอย่างใหม่ ซึ่งเป็นการประเมินเมื่อคุณได้คะแนนหลังคุณเล่นเกมจบ และนี่เป็นตัวอย่างการใช้คำสั่งทั้งหมดรวมกัน

import java.util.Scanner;

public class ElseIf {
    public static void main(String[] args) {      
        Scanner sn = new Scanner(System.in);

        System.out.println("\tScore Evaluation Program");

        System.out.print("Enter your score between 0 - 100: ");
        int score = sn.nextInt();

        if (score < 0 || score > 100) {
            System.out.println("You must enter a correct score, try again later.");
        } else {

            if (score >= 80) {
                System.out.println("Your score is excellent.");
                System.out.println("You grant grade S.");
            } else if (score >= 60) {
                System.out.println("Your score is good.");
                System.out.println("You grant grade A.");
            } else if (score >= 40) {
                System.out.println("Your score is fair.");
                System.out.println("You grant grade B.");
            } else {
                System.out.println("Your score is poor.");
                System.out.println("You grant grade C.");
            }

        }
    }
}

ในตัวอย่าง โปรแกรมจะถามผู้ใช้เพื่อให้กรอกคะแนนของเขา แล้วเก็บไว้ในตัวแปร score ในตอนแรกเราได้นำไปตรวจสอบว่าคะแนนนั้นถูกต้องหรือไม่ โดยมันต้องอยู่ในช่วงที่กำหนด โดย expression (score < 0 || score > 100) ใช้ในการตรวจสอบ ถ้าเป็นจริงหมายถึงคะแนนไม่ถูกต้องจะแจ้งข้อความบอกผู้ใช้

และถ้าหากมันถูกต้อง โปรแกรมจะมาทำในบล็อคของคำสั่ง Else โดยจะนำคะแนนมาตรวจสอบเป็นช่วงๆ ด้วยคำสั่ง Else-If ซึ่งโปรแกรมจะทำงานแค่บล็อคเดียวเท่านั้น เช่นในตัวอย่าง เมื่อกรอกคะแนนเป็น ุ68 จะทำให้ expression ในบล็อคของ else if (score >= 60) เป็นจริงโปรแกรมก็จะทำงานในบล็อคนี้ และไม่สนใจคำสั่งที่เหลือทั้งหมด

    Score Evaluation Program
Enter your score between 0 - 100: 68
Your score is good.
You grant grade A.

และนี่เป็นตัวอย่างของโปรแกรมใส่ค่าคะแนนเป็น 68 คุณสามารถลองใส่ค่าอื่นได้ เช่น ค่าที่ไม่อยู่ในระหว่าง 1 - 100 เพื่อดูผลลัพธ์ที่แตกต่างกันออกไป

Nested If-Else Statement

คำสั่ง If, Else เหล่านี้ สามารถที่จะซ้อนกันได้ เหมือนที่คุณเห็นในตัวอย่างก่อนหน้า มันสามารถซ้อนกันได้ไม่จำกัด ตามหลักการเขียนโปรแกรมพื้นฐาน การซ้อนกันจะอยู่ในบล็อคคำสั่งของอีกคำสั่ง ซึ่งมันขึ้นกับโปรแกรมที่คุณเขียนและจะออกแบบมันอย่างไร สำหรับตัวอย่างเพิ่มเติม

if ( expression ) {
    // nested level 1
    if ( expression) {
        // nested level 2
        if ( expression) {
            ...
        }
    }
} else {
    // nested level 1
    if ( expression) {

    }
}

คำสั่ง Switch

Switch เป็นคำสั่งในการเลือกทำงานของเงื่อนไขที่ตรงกันเพียงแค่เงื่อนไขเดียวเท่านั้น ในการใช้ Switch นั้นจะคล้ายกับคำสั่ง Else-If clause มาดูตัวอย่างและคำอธิบายในการใช้ Switch ในภาษา Java

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

import java.util.Scanner;

public class Switch {
    public static void main(String[] args) {    
        Scanner reader = new Scanner(System.in);

        System.out.print("What\'s floor do you want to go: ");
        char floor = reader.next().charAt(0);

        switch (floor) {
            case 'G' :
                System.out.println("Elevator is going to ground floor.");
                break;
            case '1' :
                System.out.println("Elevator is going to first floor.");
                break;
            case '2' :
                System.out.println("Elevator is going to second floor.");
                break;
            case '3' :
                System.out.println("Elevator is going to third floor.");
                break;
            default:
                System.out.println("Elevator don't know where to go.");
        }

    }
}

ในตัวอย่างเราได้ใช้คำสั่ง reader.next().charAt(0); เพราะว่าเราต้องการอ่านค่าที่เป็นตัวอักษรเพียง 1 ตัว

เราใช้คำสั่ง Switch และมันจะรับค่าพารามิเตอร์เข้ามาได้แค่เพียง 1 ค่าเท่านั้น ในตัวอย่างคือ floor มันจะถูกในไปเปรียบเทียบกับค่าในคำสั่ง case ค่าใน case นั้นสามารถเป็นได้แค่ค่าคงที่เท่านั้น และเมื่อตรงกับ case ไหนโปรแกรมจะทำงานในคำสั่งหลังจากเคสนั้นจนหมด นั้นหมายความว่าคุณต้องใช้คำสั่ง break เพื่อไม่ให้มันทำงานของ case ต่อไป

คำสั่ง defaultนั้นโปรแกรมจะทำในกรณีที่มันไม่ได้ตรงกับ case ใดเลยก่อนหน้า ซึ่งจะเป็นคำสั่งสุดท้ายที่ใส่ไว้ใน Switch เราจึงไม่จำเป็นต้องใส่คำสั่ง break (มันก็เหมือนคำสั่ง else นั้นเอง)

What's floor do you want to go: 1
Elevator is going to first floor.

และนี่เป็นผลการทำงานเมื่อใส่ค่า Input เป็น 1

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับคำสั่งควบคุมในโปรแกรม ที่ใช้เพื่อควบคุมให้โปรแกรมทำงานได้ตามต้องการ ในเงือนไขที่กำหนด ในบทต่อไปคุณจะได้เรียนรู้คำสั่งควบคุมโปรแกรมแบบวนซ้ำ

บทความนี้เป็นประโยชน์หรือไม่?Yes·No