[TIL]조건연산자(삼항연산자)
오늘 배운 내용은 조건 연산자 입니다.
조건 연산자는 삼항 연산자 또는 선택 연산자라고 하기도 한다.
자바 언어 중 유일하게 피 연산자(오퍼랜드)가 3개가 필요한 연산자 이다.
기본 형식은 이렇다.
앞부분의 조건식의 true/false 여부에 따라 해당 오퍼랜드 연산식이 실행되고 이는 변수에 저장된다.
이 연산자는 다양하게 활용이 가능한데 이중 삼중으로도 사용가능하여 if문의 기능을 대체하기도 한다.
실무에서는 비교적 짧은 문장으로 구현하기 때문에 if문보다는 조건연산자 활용을 권장한다고 한다.
(강사님 말로는 if문을 남발하는 개발자에게는 배우지말라고 했다)
이와 관련한 간단한 예제를 풀어 보았다.
1) 짝수 홀수 판별기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package ex0722;
import java.util.Scanner;
public class OperatorEx17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a;
String s;
System.out.print("정수?");
a=sc.nextInt();
s=a%2==0?"짝수":"홀수";
System.out.println(a+"->"+s);
sc.close();
}
}
|
cs |
2) 절대값 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package ex0722;
import java.util.Scanner;
public class OperatorEx18 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a,b;
System.out.print("정수?");
a=sc.nextInt();
b=a>0?a:-a; // 절대값 구하기
System.out.println(a+"절대값 :"+b);
sc.close();
}
}
|
cs |
3) 윤년 평년 인지 구분하기 (다소 높은 난이도)
이 예제의 경우 2중으로 삼항연산자가 들어갔다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package ex0722;
import java.util.Scanner;
public class OperatorEx20 {
/*년도를 입력 받아 윤년인지 평년인지를 계싼
* 실행 예:
* 년도? 2020
* 2020 -> 윤년
*
* 년도가 4의 배수이고 100의 배수가 아니거나 400배수이면 윤년 이고 그렇지 않으면 평년이다.
* */
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year;
String b;
System.out.print("년도?");
year=sc.nextInt();
b=year%4==0?(year%100!=0?"윤년":"평년"):(year%400==0?"윤년":"평년");
//a=a%4==0 && a%100!=0 || a%400==0 ?"윤년" : "평년":
System.out.println(year+ "->"+b );
sc.close();
}
}
|
cs |
4) 입력한 한문자를 대문자로 바꿔주기(아닌 문자는 그 문자 그대로 출력)
문자의 아스키 코드 값을 숫자로 변환하여 해당 범위값인지 여부를 판별해 출력하는 연산 문제였다.
나름 난이도가 있었던 편,,,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package ex0722;
import java.util.Scanner;
public class OperatorEx21 {
/*한문자를 입력 받아 입력 받은 문자가 소문자이면 대문자로 변환하고, 대문자이면 소문자로 변환한다.
* 단, 입력 받은 문자가 영문자가 아니면 입력 받은 문자를 그대로 출력한다.
* 출력 예)
* 한문자? a
* a -> A
* 소문자와 대문자의 ASCII 코드 차이는 32이다. A = 65, a=97
* */
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char a;
char b;
System.out.print("한문자 ?");
a=sc.next().charAt(0); // 한문자 입력 받음
//b= a>97? (char)(a + 32): (65<=a && a<97 ? (char)(a-32) : a);
b= a>='A'&& a <='Z' ? (char)(a+32) : (a>='a'&& a<='z' ? (char)(a-32):a);
System.out.println(a+">"+b );
sc.close();
}
}
|
cs |
'Language > JAVA' 카테고리의 다른 글
[TIL] printf()메서드의 관한 서식 (0) | 2020.07.22 |
---|---|
[TIL]배정연산자(+=,-=,*=,/= 등등) (0) | 2020.07.22 |
[TIL]논리 연산자(&&, ||) (0) | 2020.07.22 |
[TIL]동등 연산자(==, !=) & 관계 연산자(<, <=, >, >=) (0) | 2020.07.22 |
[TIL]증감연산자 (0) | 2020.07.22 |
댓글