728x90
반응형
- if ~ else문은 범위 기반의 조건 처리가 필요할 때 사용하기 좋다.
- switch문은 특정 값에 따라 분기 처리를 할 때 효율적이며, 주로 정수형, 문자열 등의 고정된 값 비교에 적합하다.
- 두 조건문 모두 자바 프로그램에서 흐름 제어에 필수적인 역할을 한다.
1. if ~ else문
if-else 문은 특정 조건이 참(true)일 때는 해당 블록을 실행하고, 그렇지 않으면 else 블록을 실행한다. 조건이 여러 개일 경우 else if 문을 사용하여 조건을 추가할 수 있다. 중괄호 {}는 명령어가 한 줄일 때 생략할 수 있지만, 코드의 가독성을 위해 가능하면 사용하는 것이 좋다.
if (조건식) {
// 조건이 true일 때 실행되는 영역
} else {
// 조건이 false일 때 실행되는 영역
}
[예시: 점수에 따른 학점 계산]
다음 코드는 점수를 입력받아 해당 점수에 맞는 학점을 출력하는 프로그램입니다.
import java.util.Scanner;
public class IfQuizExplain03 {
public static void main(String[] args) {
char grade = ' '; //변수선언
char option = '0';
Scanner input = new Scanner(System.in);
System.out.println("점수를 입력하세요 >> ");
int score = input.nextInt();
if(score % 10 >= 7 || score == 100) //100인 경우는 흔치 않으니 뒤로 넣어준다.
option = '+';
else if(score % 10 <= 3)
option = '-';
if(score >= 90)
grade = 'A';
else if(score >= 80)
grade = 'B';
else if(score >= 70)
grade = 'C';
else {
grade = 'F';
option = ' ';
}
//System.out.println("학점은 "+ grade + option + "입니다");
//문자열 뒤에 + 더하기는 concat(이어주는)이라는 메소드로 바뀐다
System.out.printf("학점은 %s%s입니다.\n", grade, option);
input.close();
}
}
위 코드에서는 점수에 따라 A, B, C, F 학점을 부여하며, 점수의 마지막 자리 수에 따라 + 또는 -를 부여한다.
- 조건이 3개 이상일 때는 if-else if-else 문을 사용하여 순차적으로 조건을 평가합니다.
- else는 모든 조건이 해당되지 않을 때 실행됩니다.
자주 사용되는 서식 문자
- %d: 정수 출력
- %f: 실수 출력
- %c: 문자 출력
- %s: 문자열 출력
+) printf 메소드 내에서 사용 하는 [서식 문자]
%d : 정수
%f : 실수
%c : 문자
%s : 문자열
%c는 콤마 옆의 순서 대로 지정된다.
위 코드에서는 점수에 따라 A, B, C, F 학점을 부여하며, 점수의 마지막 자리 수에 따라 + 또는 -를 부여합니다.
추가 설명
- 조건이 3개 이상일 때는 if-else if-else 문을 사용하여 순차적으로 조건을 평가합니다.
- else는 모든 조건이 해당되지 않을 때 실행됩니다.
자주 사용되는 서식 문자
- %d: 정수 출력
- %f: 실수 출력
- %c: 문자 출력
- %s: 문자열 출력
2. switch문
switch 문은 주어진 표현식의 결과값에 따라 여러 케이스 중 하나를 실행한다. 조건이 특정 값에 맞을 때마다 코드가 실행되며, 해당 값이 없으면 default 블록이 실행된다. switch 괄호 안에 조건에는 1. 정수값 2. 변수 3. 간단한 식이 올 수 있다.
switch (식 또는 변수) {
case 값1:
// 명령어;
break;
case 값2:
// 명령어;
break;
default:
// 명령어;
}
- break 키워드는 해당 케이스가 실행된 후 switch문을 종료하는 역할을 합니다.
- default는 일치하는 값이 없을 때 실행되는 블록입니다.
[예시1: 조건이 정수인 경우]
public static void main(String[] args) {
int num = 25;
switch (num/10) {
case 0 :
System.out.println("0이상 10미만의 수");
break;
case 1 :
System.out.println("10이상 20미만의 수");
break;
case 2 :
System.out.println("20이상 30미만의 수");
break;
default :
System.out.println("30 이상의 수.");
break;
}
}
[예시2: 조건이 변수인 경우]
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//1. 정수 2개 입력
System.out.println("정수를 2개를 입력하시오 >> ");
int num1 = input.nextInt();
int num2 = input.nextInt();
//2. 사칙연산 기호 입력
System.out.println("사칙연산(+, -, *, /) 중 하나를 입력하시오 >> ");
String operator = input.next(); //+를 입력했을때 operator는 +라는 이름의 주소로 들어감
String expression = num1 + operator + num2 + "=";
switch(operator) {
case "+":
System.out.println(expression +((num1 + num2)));
break;
case "-":
System.out.println(expression +((num1 - num2)));
break;
case "*":
System.out.println(expression +((num1 * num2)));
break;
case "/":
System.out.println(expression +((num1 / num2)));
break;
default :
System.out.println("잘못된 연산자을 입력하였습니다.");
}
input.close();
}
[예시3: 조건이 '식'인 경우]
public static void main(String[] args) {
//1.랜덤값 생성
int comp = (int)(Math.random()*3 + 1);
System.out.println("computer >> " + comp);
//2. 사용자 입력
Scanner input = new Scanner(System.in);
System.out.println("가위(1), 바위(2), 보(3) 중 하나를 입력하시오");
int user = input.nextInt();
int result = (user - comp);
switch(result) {
case 0 :
System.out.println("비겼습니다.");
break;
case -2: case 1 :
System.out.println("사용자가 이겼습니다.");
break;
case 2: case -1 :
System.out.println("사용자가 졌습니다");
break;
default :
System.out.println("다시 입력해주세요");
}
input.close();
}
}
728x90
반응형
'Programming Language > Java' 카테고리의 다른 글
[Java/개념] 데이터 타입 - 기본 타입(Primitive type)과 참조 타입(Reference type) (3) | 2024.10.10 |
---|---|
[Java/개념] 반복문 (for, while, do-while) (0) | 2024.10.08 |
[Java/개념] 타입 변환 (Type Conversion) (0) | 2024.10.07 |
[Java/개념] 자바 연산자 (Operators) (0) | 2024.10.07 |
[Java/개념] 자료형과 변수 (1) | 2024.10.07 |