이번 글에선 조건문에 대해서 알아보도록 합시다.
조건문은 특정한 조건에 대해서 그 조건이 true, false인지에 따라
각각 다른 동작을 하도록 해주는 문법입니다.
조건문은 조건식과 실행할 코드를 포함하는 블럭{}으로 구성되어 있습니다.
if문
if문은 가장 일반적으로 사용되는 조건문이며 기본 구조는 다음과 같습니다.
if(조건식){
실행코드
}
위와 같이 사용하면 조건식이 true일 때 블럭 내의 코드를 실행합니다.
이때 실행할 코드가 한 줄이라면, {}를 생략할 수 있습니다.
다음으로 이 조건이 false일 때 코드를 실행하는 법을 살펴봅시다.
if(조건식){
실행코드
}else{
실행코드2
}
위와 같이 사용하면 조건식이 false일 때는 else뒤의 블럭에 있는 코드가 실행됩니다.
마찬가지로 코드가 한 줄이라면 {}를 생략할 수 있습니다.
다음엔 검사하고 싶은 조건이 여러개일 땐 어떻게 할까요?
if문을 단순히 여러개 써도 되겠지만, 이런 방법으론 우리가 원하는 값을 얻기 힘들 수도 있습니다.
때문에 자바에선 if ~ else if라는 것이 존재하는데, 기본 구조는 다음과 같습니다.
if(조건식){
실행코드1
}else if(조건식2){
실행코드2
}else if(조건식3){
실행코드3
}else{
실행코드4
}
else if는 기본적으로 무조건 if의 뒤에 와야하며, if의 조건식이 false이면 else if의 조건식을 검사합니다.
때문에 만약 if의 조건식이 true라면 else if의 조건식은 검사도 하지 않고 넘어갑니다.
else if의 개수제한은 따로 없고, else는 위의 모든 조건을 만족하지 않을 때 실행되며, 생략 가능합니다.
실제 예제를 통해서 사용법을 알아보도록 합시다.
public class example{
public static void main(String[] args){
int grade = 70;
if(grade >= 90){
System.out.print("A");
}else if(grade >= 80){
System.out.print("B");
}else if(grade >= 70){
System.out.print("C");
}else if(grade >= 60){
System.out.print("D");
}else {
System.out.print("F");
}
}
}
위의 예제는 성적에 따라서 학점을 A,B,C,D,F순으로 출력하는 간단한 코드입니다.
그리고 이때 if ~ else if가 아닌 여러개의 if를 사용하게 된다면, grade가 90이라고 가정했을 때
ABCD모두를 출력할 것이기 때문에 이런 때는 if ~else if를 사용해주시는게 적절합니다.
중첩 if문
이렇게 조건문을 사용했을 때, 한 번 조건을 검사한 결과에서 다시 조건을 검사할 수 있습니다.
이때 사용하는 것은 중첩 if문인데, 말 그대로 if문의 실행코드 안에 다시 if문을 사용하는 것입니다.
if(조건식1){
if(조건식2){
실행코드2
}else{
실행코드3
}
}
이렇게 하면 조건식 1이 true일 때 다시 조건식 2의 값에 따라서 코드를 분리할 수 있습니다.
위에서 봤던 성적 예제를 조금 바꿔보도록 합시다.
public class example{
public static void main(String[] args){
int grade = 88;
if(grade >= 90){
if(grade >= 95){
System.out.print("A+");
}else{
System.out.print("A");
}
}else if(grade >= 80){
if(grade >= 85){
System.out.print("B+");
}else{
System.out.print("B");
}
}else if(grade >= 70){
if(grade >= 75){
System.out.print("C+");
}else{
System.out.print("C");
}
}else if(grade >= 60){
if(grade >= 65){
System.out.print("D+");
}else{
System.out.print("D");
}
}else {
System.out.print("F");
}
}
}
위의 예제는 중첩 if문을 사용해 성적을 좀 더 세분화해서 나누도록 한 코드입니다.
자바에서 조건문은 if외에도 switch라는것이 있는데, 한 번 살펴봅시다.
switch문
switch문의 경우 조건의 경우의 수가 많을 때 사용하면 if문 보다 간결하고, 알아보기 쉽습니다.
하지만 switch문은 if문 보다 제약조건이 많고, switch문으로 작성된 코드는 모두 if문으로도
작성이 가능하지만, if문으로 작성된 코드는 항상 switch문으로 작성할 수는 없습니다.
switch문의 기본구조는 다음과 같습니다.
switch(조건식){
case 값1:
실행코드
break;
case 값2:
실행코드2
break;
default:
실행코드 3
break;
}
switch문의 경우 if문과 다르게 조건식의 결과가 int형 범위의 정수값이어야 합니다.
따라서 이곳에 byte, short, char, int타입의 변수나 리터럴, 이를 계산하는 계산식이 올 수 있습니다.
그리고 case문에는 이 값과 대응될 값을 입력하는데, 여기엔 오직 리터럴이나 상수만을 허용합니다.
case의 값과 조건식의 값이 일치하면 이하 코드를 실행하고, 이때 블럭{}은 필요없습니다.
그리고 break이 뭔지 궁금하신 분들도 있을텐데, 이 break을 만나면 switch문은 뒤의 조건을 검사하지
않고 switch문을 빠져나갑니다. if ~ else if같은 형태라고 생각하시면 됩니다.
switch문의 경우 break을 빼놓으면 하나의 case에 해당하는 코드를 실행하고도 뒤의 조건들을
계속해서 검사하기 때문에, 자신의 의도에 따라서 적절하게 넣을지 말지 여부를 결정해주셔야 합니다.
마지막에 있는 default는 if문의 else와 동일하다고 생각해주시면 됩니다.
그럼 예제를 통해 실제 사용법을 알아보도록 합시다.
public class example{
public static void main(String[] args){
int in;
in = (int)(Math.random() * 10) + 1;
switch(in){
case 1:
System.out.print("in = 1입니다.");
break;
case 2:
System.out.print("in = 2입니다.");
break;
case 3:
System.out.print("in = 3입니다.");
break;
case 4:
System.out.print("in = 4입니다.");
break;
case 5:
System.out.print("in = 5입니다.");
break;
case 6:
System.out.print("in = 6입니다.");
break;
case 7:
System.out.print("in = 7입니다.");
break;
case 8:
System.out.print("in = 8입니다.");
break;
case 9:
System.out.print("in = 9입니다.");
break;
case 10:
System.out.print("in = 10입니다.");
break;
default:
break;
}
}
}
위의 예제는 Math.random()을 사용해 임의로 얻은 값에 대해서 switch문을 사용해 각 값에 따른
출력을 해주는 예제입니다. 이때 Math.random()은 1~10중 임의의 숫자를 계산해줍니다.
이상으로 조건문에 대한 설명은 마치도록 하고, 다음엔 반복문에 대해서 알아보겠습니다.
감사합니다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
자바 10. 배열-1 (0) | 2020.08.14 |
---|---|
자바 9. 반복문 (0) | 2020.08.13 |
자바 7. 연산자-2 (0) | 2020.08.11 |
자바 6. 연산자-1 (0) | 2020.08.10 |
자바 5. 형변환 (0) | 2020.08.07 |