[JAVA] 조건문 ( if 문, if-else 문, switch 문 )
if 문
if(조건식){
실행문장
}
- 조건식이 참이면, 문장을 실행한다.
예시
시험점수가 80점 이상이라면 합격 판별을 하는 프로그램
import java.util.Scanner;
public class SuccessOrFail {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수를 입력하시오:");
int score = scanner.nextInt();
if (score >= 80)
System.out.println("축하합니다.! 합격입니다.");
scanner.close();
}
}
실행결과
정수를 입력하시오:90
축하합니다.! 합격입니다.
시험점수를 입력받기위해서 Scanner 클래스를 import한다. 이를 이용하여서 사용자로부터 값을 입력받고, 입력받은 값을 nextInt()메소드를 이용해서 score변수에 대입한다. if문 조건식score가 80보다 크거나 같으면 아래의 문장을 실행한다. 마지막으로 프로그램을 종료하기 전에 clsoe()메소드로 scanner를 종료한다.
if문에서는 문제를 해결하기 위한 알맞은 조건을 조건식으로 설정하는 것이 가장 중요햐다.
if-else 문
- 실행문장이 하나일 경우에는 중괄호 생략이 가능하다.
- if문 조건식이 참이라면 아래문장을 실행하고, 거짓이라면, else문을 실행한다.
if(조건식){
실행문장
}
else {
실행문장
}
예시
입력된 수가 3의 배수인지 판별하는 프로그램
import java.util.Scanner;
public class MultipleOfThree {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("수를 입력하시오: ");
int num = scanner.nextInt();
if(num%3 ==0) {
System.out.println("3의 배수입니다.");
}
else {
System.out.println("3의 배수가 아닙니다.");
}
}
}
실행결과
수를 입력하시오: 267
3의 배수입니다.
수를 입력받기 위해서 Scanner클래스를 사용한다. 정수형 변수 num을 선언하면서 nextInt()메소드를 대입한다. num이 3으로 나누었을 때, 나머지가 0이면 아래의 문장을 실행한다. 나머지가 0이라는 말은 곧, "3의 배수이면"과 같다. 조건식이 거짓이면, "3의 배수가 아님을 출력한다.".
다중 if-else 문
- if-else문에 else if문이 추가된 형태이다.
예시
다중 if-else 문을 이용하여 입력받은 성적에 대해 학점을 부여하는 프로그램
import java.util.Scanner;
public class Grading {
public static void main(String[] args) {
char grade;
Scanner scanner = new Scanner(System.in);
System.out.print("점수를 입력하시오(0-100): ");
int num = scanner.nextInt();
if(num >= 90)
grade = 'A';
else if(num >= 80)
grade = 'B';
else if(num >= 70)
grade = 'C';
else if(num >= 60)
grade = 'D';
else
grade = 'F';
System.out.print("학점은 "+ grade + "입니다.");
scanner.close();
}
}
실행결과
점수를 입력하시오(0-100):79
학점은 C입니다.
if문 조건식이 거짓이면, else if문의 조건식을 검사한다. 조건식이 참이면, 문장을 실행하고 아니면 아래의 else if문의 조건식을 검사한다.
if-else문을 조건연산자 '?' ':'으로 변경할 수 있다.
switch 문
switch (식){
case 값1:
break;
case 값2:
break;
...
case 값n:
case 값n;
break;
default:
실해문장 m;
- 특정한 값에 따라 여러 방향으로 분기하는 경우, switch문을 사용하면 가독성이 높은 코드를 작성할 수 있다.
- switch문 식을 case문의 값과 비교한다. 이때, case문의 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴 만 허용한다.
- case문의 값 중에서 변수나 식은 사용할 수 없다.
예시
switch문을 이용하여 커피 메뉴의 가격을 알려주는 프로그램을 작성하라. 에스프레소, 카푸치노, 카페라떼는 3500원이고, 아메리카노는 2000원이다.
import java.util.Scanner;
public class CoffeePrice {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int price = 0;
System.out.print("무슨 커피를 드릴까요?");
String order = scanner.next();
switch(order) {
case "에스프레소":
case "카푸치노":
case "카페라떼":
price = 3500;
break;
case "아메리카노":
price = 2000;
break;
default:
System.out.println("메뉴없음");
}
if(price!= 0) System.out.print(order + "는 " + price + "원입니다.");
scanner.close();
}
}
실행결과
무슨 커피를 드릴까요?카푸치노
카푸치노는 3500원입니다.
Scanner클래스로 입력받은 값을 String클래스 order에 대입한다. switch문 식을 order로 하여서 이를 case문의 값과 비교하도록 하고 이를 만족하면, 설정해놓은 price값을 대입한다. 이때, 해당하는 조건이 없을 경우에는 "메뉴없음"을 출력하도록 한다.
price값이 '0'이 아니라면, 커피 메뉴의 가격을 출력하도록 한다.
default문은 생략가능하다. break;를 만나면, switch문을 벗어난다.