본문으로 건너뛰기
Java 기초집LESSON 06

조건문: if, switch와 게임 점수 등급 계산

난이도입문 → 초급
예상 시간35분
선수지식이전 강의

6강. 조건문: if, switch와 게임 점수 등급 계산

1. 이번 강의에서 해결할 문제​

값을 저장하고 계산해도 모든 입력에 같은 문장만 출력하면 게임 규칙을 표현할 수 없습니다. 점수에 따라 등급을 고르고 모드별 보너스를 적용하려면 실행 경로를 나눠야 합니다. 이때 조건 순서가 뒤집히면 높은 점수가 낮은 등급을 받고, 처리하지 않은 모드가 조용히 잘못된 값으로 이어질 수 있습니다.

2. 학습 목표​

3. 핵심 개념​

조건문은 실행할 경로를 고릅니다​

if는 괄호 안의 boolean 표현식이 true일 때 중괄호 블록을 실행합니다. else는 앞 조건이 거짓일 때, else if는 앞 조건이 거짓이면서 자신의 조건이 참일 때 실행됩니다.

int score = 120;
boolean canReceiveReward = score >= 100;

if (canReceiveReward) {
System.out.println("보상을 지급합니다.");
} else {
System.out.println("점수가 부족합니다.");
}

score >= 100은 숫자를 만드는 식이 아니라 true 또는 false를 만드는 비교식입니다. 중괄호는 조건에 속한 코드 범위를 표시합니다. 한 줄이어도 중괄호를 쓰면 코드를 추가할 때 실수로 조건 밖에 두는 문제를 줄일 수 있습니다.

한 체인에서는 처음 참인 블록 하나만 실행됩니다​

점수 1,500은 score >= 900, score >= 1_200, score >= 1_500을 모두 만족합니다. 낮은 기준부터 검사하면 첫 조건에서 B를 선택하고 아래 조건을 보지 않습니다. 겹치는 하한 조건은 가장 높은 값부터 내려와야 합니다.

switch는 하나의 값에 따른 선택을 모읍니다​

게임 모드처럼 하나의 값과 여러 후보를 정확히 비교할 때 switch를 사용하면 선택지를 한곳에서 볼 수 있습니다. 이 과정의 Java 버전에서는 case ... -> 값 형태의 switch 식으로 결과를 바로 만들 수 있습니다. default는 알려지지 않은 입력을 어떻게 처리할지 나타냅니다. 잘못된 입력을 0점으로 조용히 받아들일지, 오류로 거부할지는 요구사항에 따라 결정해야 합니다.

4. 가장 작은 예제로 시작하기​

int score = 80;

if (score >= 100) {
System.out.println("목표 달성");
} else {
System.out.println("20점이 더 필요합니다.");
}
  1. 80 >= 100을 계산하면 false입니다.
  2. 첫 중괄호 블록을 건너뜁니다.
  3. else 블록의 문장을 출력합니다.

score를 정확히 100으로 바꾸면 >= 조건은 true가 됩니다. >를 사용하면 100은 거짓이므로 요구사항에 경계값 포함 여부를 먼저 정해야 합니다.

5. 코드 한 줄씩 이해하기와 실행 흐름​

src/GradeCalculator.java 작성​

실행 환경: 코드 편집기

실행 위치: C:\dev\game-records

실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.

대상 파일: src/GradeCalculator.java

src/GradeCalculator.java
public class GradeCalculator {
public static void main(String[] args) {
int score = 1_350;
String mode = "ranked";

String grade;
if (score >= 1_500) {
grade = "S";
} else if (score >= 1_200) {
grade = "A";
} else if (score >= 900) {
grade = "B";
} else {
grade = "C";
}

int modeBonus = switch (mode) {
case "ranked" -> 200;
case "casual" -> 50;
default -> 0;
};
System.out.println("등급: " + grade + ", 보너스: " + modeBonus);
}
}

PowerShell에서 컴파일·실행​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-records

실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.

대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일

Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\GradeCalculator.java
java -cp out GradeCalculator

예상 출력:

등급: A, 보너스: 200

점수 1,350의 흐름은 다음과 같습니다.

순서검사결과동작
11350 >= 1500false다음 조건 검사
21350 >= 1200truegrade = "A", 체인 종료
3mode가 "ranked"인가일치switch 식의 결과는 200
4출력-등급: A, 보너스: 200

switch 식은 각 case가 값을 제공하므로 modeBonus에 바로 초기화할 수 있습니다. 모드를 "casual"로 바꾸면 등급은 그대로 A이고 보너스만 50으로 바뀝니다. 등급 판단과 모드 판단이 서로 다른 질문이므로 독립적으로 계산됩니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

10. 다음 강의 연결​

한 점수의 등급과 모드 보너스를 선택할 수 있게 되었습니다. 다음 강의에서는 여러 경기 점수에 같은 판단을 반복 적용하고 반복 종료 조건을 제어합니다.

MINI QUIZ

조건문: if, switch와 게임 점수 등급 계산 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1다음 중 “조건문: if, switch와 게임 점수 등급 계산”의 핵심 요약을 실제 상황에 맞게 적용한 것은 무엇인가요?
  2. 문제 2‘서로 독립된 판단을 else if로 모두 연결하기’ 실수를 판단할 때 “조건문: if, switch와 게임 점수 등급 계산” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

6강. 조건문: if, switch와 게임 점수 등급 계산 미완료 상태