JAVA

[자바/JAVA] 프로그래밍 - 삼항연산자(ternary operator)

21종 2023. 5. 29. 19:09

삼항 연산자 (항목 3개를 가지고 연산해주는 연산자)

 

[표현식]

조건식 ? : 조건식이 참일 경우 돌려줄 결과값 : 조건식이 거짓일 경우 돌려줄 결과값

이때, 조건식은 반드시 true 또는 false가 나오도록 작성해야됨!

주로 비교, 논리연산자를 통해 작성할꺼임


예제) 입력받은 정수 값이 양수인지 아닌지 판별 후 출력

public void method1() {
    Scanner sc = new Scanner(System.in);

    System.out.print("정수를 입력해주세요 : ");
    int num = sc.nextInt();
	String result =	(num > 0) ? "양수 입니다." : "양수가 아닙니다.";	// 조건 ? 참일경우 : 거짓일경우
	System.out.print(result);

}

예제 )

xx은(는) xxxx

7은 양수입니다. -99는 음수입니다.

** 조건 : sysout 한번

public void method1() {
    Scanner sc = new Scanner(System.in);
    
    String result = (num > 0) ? num + "은(는) 양수입니다." : num + "은(는) 음수입니다.";		// 방법 1
    System.out.println(result);

//	System.out.println(num + "은(는)" + ((num > 0) ? "양수입니다." : "음수입니다."));		// 방법 2
    sc.close();
}

예제) 사용자에게 종료여부를 입력 받아 판별해서 출력

public void method3() {
    Scanner sc = new Scanner(System.in);

    System.out.print("종료하시려면 y를 입력해주세요 : ");
    char ch = sc.nextLine().charAt(0);	// Y y 

    String result = (ch == 'y' || ch == 'Y') ? "프로그램을 종료합니다." : "계속진행하겠습니다.";
    System.out.println(result);

    sc.close();
}

예제) 영문자 입력받아서, 영어 소문자인지 아닌지 판별 후 출력

ex)

a는 소문자입니다. 

F는 소문자가 아닙니다.

public void method4() {
    Scanner sc = new Scanner(System.in);

    System.out.print("영문자를 입력하세요 : ");
    char ch = sc.nextLine().charAt(0);

    String result = (ch >= 97 && ch <= 122) ? "소문자입니다." : "소문자가 아닙니다.";

    System.out.println(ch + "은(는) " + result);

    sc.close();
}

예제) 삼항연산자 중첩해서 양수, 음수, 0 에 따라 그에 맞는 문구 출력

public void method5() {

    Scanner sc = new Scanner(System.in);

    System.out.print("정수값 입력 : ");
    int num = sc.nextInt();

    String result = (num > 0) ? "양수입니다." : (num == 0) ? "0입니다." : "음수입니다.";
    System.out.println(num + "은(는) " + result);

    sc.close();
}

예제) 

사용자에게 두개의 정수를 입력 받고

+ 또는 -를 입력받아 그에 맞는 연산결과 출력

단, + 또는 - 외의 다른문자를 입력했을 경우 "잘못 입력했습니다." 출력

public void method6() {

    Scanner sc = new Scanner(System.in);

    System.out.print("첫번째 정수를 입력하세요 : ");
    int num1 = sc.nextInt();

    System.out.print("두번째 정수를 입력하세요 : ");
    int num2 = sc.nextInt();
    // 버퍼에 남아있는 엔터제거를 위한 코드 작성
    sc.nextLine();

    System.out.print("연산자 입력 (+/-) : ");
    char op = sc.nextLine().charAt(0);

    String result = (op == '+') ? (num1 + num2 + "") 
            : (op == '-') ? (num1 - num2 + "") : "잘못 입력했습니다.";   
    System.out.println(result);

    sc.close();

}