Java Conditions
Table of contents
Conditional Statements
조건문, 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문
if 문
if / else 문
if / else if / else 문
switch 문
if Statement
조건식의 결과가 참(true)이면 주어진 명령문을 실행, 거짓(false)이면 아무것도 실행하지 않음
들여쓰기로 가독성이 좋게 만드는것이 좋음
실행될 명령문이 한 줄 뿐이라면 중괄호({})를 생략할 수 있음
syntax
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
}
예제
int score = 90;
if(score>=90) {
System.out.println("점수가 90보다 큽니다");
System.out.println("학점 A");
}
if / else Statement
실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략가능
syntax
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식의 결과가 거짓일 때 실행하고자 하는 명령문;
}
예제
int score = 90;
if(score<90) {
System.out.println("점수가 90작습니다");
System.out.println("학점 B");
}else {
System.out.println("점수가 90보다 큽니다");
System.out.println("학점 A");
}
if / else if / else Statement
실행될 명령문이 한 줄뿐이라면 중괄호({})를 생략가능
syntax
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 명령문;
} else if (조건식2) {
조건식2의 결과가 참일 때 실행하고자 하는 명령문;
} else {
조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 명령문;
}
예제
int score = 90;
if(score>=90) {
System.out.println("점수가 90보다 큽니다");
System.out.println("학점 A");
}else if(score>=80){
System.out.println("점수가 80보다 큽니다");
System.out.println("학점 B");
}else if(score>=70){
System.out.println("점수가 70보다 큽니다");
System.out.println("학점 C");
}else {
System.out.println("점수가 70보다 작습니다");
System.out.println("학점 D");
}
Nested if Statement
예제
int score = 90;
double score2 = Math.random(); // 0<= 난수 < 1
System.out.println(score2);
// 81~100사이의 난수 발생
int score3 = (int) (Math.random()*20)+81;
System.out.println(score3);
String grade = "";
if(score>=90) {
if(score>=95) {
grade = "A+";
}else {
grade = "A";
}
}else {
if(score>=85) {
grade = "B+";
}else {
grade = "B";
}
}
System.out.println("학점은" + grade);
Ternary Operator
삼항연산자로 조건문을 표현할 수 있음
if / else 문을 삼항 연산자를 이용하여 간결하게 표현가능
syntax
조건식 ? 반환값1 : 반환값2
switch Statement
주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문
▸ if / else 문보다 가독성이 더 좋으며, 컴파일러가 최적화를 쉽게 할 수 있어 속도 또한 빠름
▸ default : 건 값이 위에 나열된 어떠한 case 절에도 해당하지 않을 때만 실행
→ 반드시 존재해야 하는 것은 아니며 필요할 때만 선언
→ 맨 마지막에 위치해야 하지만, case절 사이에 위치해도 상관없긴 함
▸ 각 case 절 및 default 절은 반드시 break 키워드를 포함(없으면 끝나지를 않음)
switch 조건 값으로 사용 가능한 데이터 타입
byte형, short형, char형, int형의 변수나 리터럴 (int형으로 승격할 수 있는(integer promotion)값만 가능)
기본 타입에 해당하는 데이터를 객체로 포장해 주는 래퍼 클래스(Wrapper class) 중에서 위에 해당하는 Byte, Short, Character, Integer 클래스의 객체
enum 키워드를 사용한 열거체(enumeration type)와 String 클래스의 객체
→ if/else문보다 사용할 수 있는 상황이 적음
syntax
switch (조건 값) {
case 값1:
조건 값이 값1일 때 실행하고자 하는 명령문;
break;
case 값2:
조건 값이 값2일 때 실행하고자 하는 명령문;
break;
...
default:
조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문;
break;
}
switch int
int num = (int)(Math.random()*6)+1;
switch(num) {
case 6 : System.out.println(num); break;
case 5 : System.out.println(num); break;
case 4 : System.out.println(num); break;
case 3 : System.out.println(num); break;
case 2 : System.out.println(num); break;
default: System.out.println(num);
}
char int
char grade = 'a';
switch(grade) {
case 'A' :
case 'a' : System.out.println("A학점입니다"); break;
case 'b' : System.out.println("B학점입니다"); break;
default : System.out.println("F");
}
string int
java6까지는 정수타입(byte~long)까지만 가능했지만 java7부터 String도 가능해짐
String position = "과장";
switch(position) {
case "부장": System.out.println("급여는 700만원입니다"); break;
case "과장": System.out.println("급여는 500만원입니다"); break;
default : System.out.println("급여는 300만원입니다");
}
Exercise
Dice
1~6 사이의 난수를 발생시키기
int nansu = (int) (Math.random()*6)+1;
System.out.println(nansu);