자바 문법은 읽기만 하면 아는 것 같지만, 직접 코드를 작성해보면 헷갈리는 부분이 바로 드러납니다. 특히 변수, 연산자, 조건문, 반복문은 서로 연결되어 자주 사용됩니다.
이번 글은 지금까지 배운 내용을 직접 손으로 확인하는 연습 문제입니다. 문제는 새로 구성했으며, 각 문제마다 먼저 생각할 방향과 풀이 코드를 함께 정리합니다.
아직 반복문이나 형변환이 익숙하지 않다면 자바 반복문 정리 — while부터 for까지, 자바 스코프와 형변환 정리를 먼저 보는 편이 좋습니다.
1. 연습할 내용
이번 글에서는 아래 내용을 한 번에 복습합니다.
- 변수 선언과 값 변경
- 산술 연산자와 나머지 연산자
- 조건문
if,else if,else - 반복문
for,while break,continue- 정수 계산과 형변환
처음부터 정답을 외우려고 하기보다, 출력 결과를 먼저 예상해보고 코드를 실행해보는 편이 좋습니다.
2. 문제 1 — 물병 나누기
문제
물병이 23개 있습니다. 한 상자에는 물병을 4개씩 담을 수 있습니다.
아래 값을 출력해보세요.
- 가득 찬 상자 수
- 남는 물병 수
처음 떠오르는 생각
가득 찬 상자 수는 나누기 /로 구할 수 있습니다.
남는 물병 수는 나머지 %로 구할 수 있습니다.
코드
public class BottleBoxExample {
public static void main(String[] args) {
int bottleCount = 23;
int boxSize = 4;
int fullBoxCount = bottleCount / boxSize;
int remainingBottle = bottleCount % boxSize;
System.out.println("가득 찬 상자 수: " + fullBoxCount);
System.out.println("남는 물병 수: " + remainingBottle);
}
}
실행 예시
가득 찬 상자 수: 5
남는 물병 수: 3
정리
23 / 4의 결과는 5입니다.
int끼리 나누면 소수점은 나오지 않습니다.
23 % 4의 결과는 3입니다.
나누고 남은 값을 구할 때 %를 사용합니다.
3. 문제 2 — 온도 상태 판정하기
문제
사육장 온도에 따라 상태 문구를 출력합니다.
기준은 다음과 같습니다.
| 온도 | 출력 |
|---|---|
| 32도 이상 | 뜨거운 편입니다. |
| 26도 이상 32도 미만 | 적당한 편입니다. |
| 20도 이상 26도 미만 | 조금 낮은 편입니다. |
| 20도 미만 | 낮은 온도입니다. |
처음 떠오르는 생각
여러 범위를 나누어야 하므로 if, else if, else를 사용하면 됩니다.
더 높은 기준부터 차례대로 확인하면 조건을 읽기 쉽습니다.
코드
public class TemperatureStateExample {
public static void main(String[] args) {
int temperature = 27;
if (temperature >= 32) {
System.out.println("뜨거운 편입니다.");
} else if (temperature >= 26) {
System.out.println("적당한 편입니다.");
} else if (temperature >= 20) {
System.out.println("조금 낮은 편입니다.");
} else {
System.out.println("낮은 온도입니다.");
}
}
}
실행 예시
적당한 편입니다.
정리
else if는 위에서부터 조건을 확인합니다.
한 번 조건이 참이면 아래 조건은 더 이상 확인하지 않습니다.
그래서 범위를 나눌 때는 조건의 순서가 중요합니다.
4. 문제 3 — 짝수 합 구하기
문제
1부터 20까지 숫자 중 짝수만 더해서 출력해보세요.
처음 떠오르는 생각
1부터 20까지 반복해야 하므로 for 문을 사용할 수 있습니다.
짝수는 number % 2 == 0으로 확인할 수 있습니다.
코드
public class EvenSumExample {
public static void main(String[] args) {
int sum = 0;
for (int number = 1; number <= 20; number++) {
if (number % 2 == 0) {
sum += number;
}
}
System.out.println(sum);
}
}
실행 예시
110
정리
반복문은 숫자를 하나씩 확인하고, 조건문은 그 숫자가 짝수인지 판단합니다. 이처럼 반복문과 조건문은 함께 쓰는 경우가 많습니다.
5. 문제 4 — 홀수는 건너뛰고 출력하기
문제
1부터 10까지 숫자 중 짝수만 출력해보세요.
이번에는 continue를 사용합니다.
처음 떠오르는 생각
홀수이면 출력하지 않고 다음 반복으로 넘어가면 됩니다.
continue는 현재 반복을 건너뛰고 다음 반복으로 이동합니다.
코드
public class ContinuePracticeExample {
public static void main(String[] args) {
for (int number = 1; number <= 10; number++) {
if (number % 2 != 0) {
continue;
}
System.out.println(number);
}
}
}
실행 예시
2
4
6
8
10
정리
continue를 만나면 아래 코드를 실행하지 않고 다음 반복으로 넘어갑니다.
위 코드에서는 홀수일 때 출력문을 건너뛰기 때문에 짝수만 출력됩니다.
6. 문제 5 — 목표 점수에 도달하면 멈추기
문제
점수가 0점에서 시작합니다. 반복할 때마다 15점씩 더합니다. 점수가 60점 이상이 되면 반복을 멈추고 최종 점수를 출력합니다.
처음 떠오르는 생각
반복하면서 점수를 올리다가 특정 조건이 되면 멈춰야 합니다.
이럴 때 while과 break를 함께 사용할 수 있습니다.
코드
public class BreakPracticeExample {
public static void main(String[] args) {
int score = 0;
while (true) {
score += 15;
if (score >= 60) {
break;
}
}
System.out.println("최종 점수: " + score);
}
}
실행 예시
최종 점수: 60
정리
while (true)는 조건만 보면 계속 반복되는 구조입니다.
하지만 내부에서 break를 만나면 반복문을 빠져나옵니다.
이런 코드는 반드시 반복을 끝낼 수 있는 조건이 명확해야 합니다.
7. 문제 6 — 평균을 소수점까지 구하기
문제
국어, 영어, 수학 점수의 평균을 소수점까지 출력해보세요.
점수는 다음과 같습니다.
| 과목 | 점수 |
|---|---|
| 국어 | 83 |
| 영어 | 77 |
| 수학 | 92 |
처음 떠오르는 생각
정수끼리 나누면 결과도 정수입니다.
소수점까지 보려면 계산 중 하나를 double로 바꿔야 합니다.
코드
public class AveragePracticeExample {
public static void main(String[] args) {
int korean = 83;
int english = 77;
int math = 92;
int sum = korean + english + math;
double average = (double) sum / 3;
System.out.println("합계: " + sum);
System.out.println("평균: " + average);
}
}
실행 예시
합계: 252
평균: 84.0
정리
(double) sum은 sum 값을 double로 바꾼 뒤 계산하겠다는 뜻입니다.
그래서 평균이 정수 계산으로 잘리지 않고 소수점 형태로 나옵니다.
8. 문제 7 — 블록 안 변수 확인하기
문제
아래 코드에서 어떤 변수는 사용할 수 있고, 어떤 변수는 사용할 수 없는지 생각해보세요.
public class ScopeQuizExample {
public static void main(String[] args) {
int level = 3;
if (level >= 3) {
String title = "연습생 탈출";
System.out.println(title);
}
System.out.println(level);
}
}
처음 떠오르는 생각
level은 main 블록 안에서 만들어졌습니다.
그래서 main 안에서는 계속 사용할 수 있습니다.
title은 if 블록 안에서 만들어졌습니다.
그래서 if 블록 안에서만 사용할 수 있습니다.
정리
스코프는 변수를 사용할 수 있는 범위입니다.
중괄호 {} 안에서 만든 변수는 보통 그 중괄호를 벗어나면 사용할 수 없습니다.
9. 연습할 때 확인할 것
문제를 풀 때는 정답 코드만 보는 것보다 아래 순서로 확인하면 좋습니다.
- 어떤 변수가 필요한지 먼저 적어봅니다.
- 조건이 필요한지 반복이 필요한지 나눠봅니다.
- 출력 결과를 먼저 예상해봅니다.
- 코드를 실행하고 예상과 비교합니다.
- 값 하나를 바꿔서 다시 실행해봅니다.
처음부터 완벽하게 쓰려고 하지 않아도 됩니다. 작은 코드를 직접 바꿔보면서 결과가 어떻게 달라지는지 확인하는 것이 더 중요합니다.
정리
이번 글에서는 Java 입문 문법을 연습 문제로 복습했습니다.
- 나누기
/와 나머지%는 함께 자주 사용됩니다. - 조건 범위를 나눌 때는
if,else if,else를 사용할 수 있습니다. - 반복 횟수가 분명하면
for문이 잘 어울립니다. - 조건을 만족할 때까지 반복한다면
while문을 사용할 수 있습니다. continue는 현재 반복을 건너뜁니다.break는 반복문을 끝냅니다.- 평균을 소수점까지 구하려면 형변환을 생각해야 합니다.
- 블록 안에서 만든 변수는 블록 밖에서 사용할 수 없습니다.
문법은 눈으로 보는 것보다 직접 작성해볼 때 더 빨리 익숙해집니다. 이번 글의 예제에서 숫자와 조건을 조금씩 바꿔보면 변수, 조건문, 반복문 흐름을 더 자연스럽게 이해할 수 있습니다.