Java 제어문(Control statement)의 조건문(Conditional statement)
조건문(Conditional statement)
자바는 if문과 switch문 두 개의 조건문을 가지고 있다. 이런한 문장들을 사용하여 실행 중에 조건들을 토대로 프로그램의 실행의 흐름을 제어할 수 있다.
if~else문
if문은 조건에 따라 두 대의 문장중에 하나가 수행되는 조건문이다.
if(조건식)
실행 문장1;
else
실행 문장2;
if 문은 조건식에 내용에 따란 true나 false값을 반환한다. else문은 필요시 기술을 하며 필요 없을 경우에는 생략할 수 있다.
package com.devkuma.tutorial.control.statement;
public class IfElse {
public static void main(String[] args) {
int a = 0;
if (a == 1) {
System.out.println("a는 1이다.");
} else {
System.out.println("a는 1 아니다.");
}
}
}
if ~ else if문
if ~ else if문은 if문을 이용하여 다중 선택을 가능하게 해준다.
if(조건식1)
실행 문장1;
else if(조건식2)
실행 문장2;
...
else
실행 문장3;
자바의 모든 구문은 위에서 아래로 (top-down) 순차적으로 수행한다. 처음 조건식이 참으로 평가되면 해당 식을 수행한 후, if문장을 빠져 나가게 된다. 처음 조건절이 거짓으로 평가되면 계속해서 else if 조건절을 평가하여 수행한다.
package com.devkuma.tutorial.control.statement;
public class IfElseIf {
public static void main(String[] args) {
int month = 3;
String season = null;
if (month == 1) {
season = "winter";
} else if (month == 2) {
season = "winter";
} else if (month == 3) {
season = "spring";
} else if (month == 4) {
season = "spring";
} else if (month == 5) {
season = "spring";
} else if (month == 6) {
season = "summer";
} else if (month == 7) {
season = "summer";
} else if (month == 8) {
season = "summer";
} else if (month == 9) {
season = "autumn";
} else if (month == 10) {
season = "autumn";
} else if (month == 11) {
season = "autumn";
} else if (month == 12) {
season = "winter";
}
System.out.println("month=" + month + ", season=" + season);
}
}
실행 결과는 아래와 같다.
month=3, season=spring
switch ~ case문
switch ~ case문은 다중 선택을 가능하게 해준다.
switch(수식) {
case 값1:
실행 문장1;
break;
case 값2:
실행 문장2;
break;
.....
case 값n:
실행 문장n;
break;
defulat:
디폴트 실행 문장;
}
각 case문의 break문은 선택사항이다. 만일 break를 생략하게 된다면, 실행은 바로 밑에 있는 case문으로 넘어가게 된다. 이를 이용하여 다수개의 case절을 하나의 시행문으로 지정할 수 있다.
package com.devkuma.tutorial.control.statement;
public class SwitchCase1 {
public static void main(String[] args) {
int a = 257;
int result = a % 3;
switch (result) {
case 1:
System.out.println(a + "는 3의 배수가 아니다.");
break;
case 2:
System.out.println(a + "는 3의 배수가 아니다.");
break;
default:
System.out.println(a + "는 3의 배수이다.");
break;
}
}
}
각 case
문의 break
문는 선택사항이다. 만일 break문을 생략하게 된다면, 실행은 바로 아래에 있는 case
문으로 넘어가게 된다. 따라서 위에 예제는 아래과 같아 변경 가능하다.
package com.devkuma.tutorial.control.statement;
public class SwitchCase2 {
public static void main(String[] args) {
int a = 257;
int result = a % 3;
switch (result) {
case 1:
case 2:
System.out.println(a + "는 3의 배수가 아니다.");
break;
default:
System.out.println(a + "는 3의 배수이다.");
break;
}
}
}
case 문자의 실행 문장은 break를 만나거나 마지막 case문 또는 default문에 도달할 때까지 계속 실행된다.
위에 if~else문 예제를 변경하면 아래와 같이 변경할 수 있다.
package com.devkuma.tutorial.control.statement;
public class SwitchCase3 {
public static void main(String[] args) {
int month = 3;
String season = null;
switch (month) {
case 1:
case 2:
case 12:
season = "winter";
break;
case 3:
case 4:
case 5:
season = "spring";
break;
case 6:
case 7:
case 8:
season = "summer";
break;
case 9:
case 10:
case 11:
season = "autumn";
break;
default:
break;
}
System.out.println("month=" + month + ", season=" + season);
}
}
중첩된 switch문
switch문 내에 다른 switch문을 포함시킬 수 있다. 중첩된 상태의 switch문들은 같은 값을 가지는 case문을 자유롭게 사용할 수 있다.
package com.devkuma.tutorial.control.statement;
public class SwitchCase4 {
public static void main(String[] args) {
int a = 1;
int b = 2;
switch (a) {
case 1:
switch (b) {
case 0:
System.out.println("a=1, b=0");
case 1:
System.out.println("a=1, b=1");
}
break;
case 2:
System.out.println("a=2");
break;
default:
break;
}
}
}