์ค๋์ CH2 Java ๊ณ์ฐ๊ธฐ ๊ณผ์ ๋ฅผ ํด๋ณด์๋ค.
์ ๋ฒ ์ฃผ, ์ด์ ํํํ Java ๊ฐ์๋ฅผ ๋ค์ด์ ์ค๋ ๋ฐ๋ก ๊ณผ์ ๋ฅผ ์งํํ ์ ์์๋ค.
๊ณผ์ Intro
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ณ์ฐ๊ธฐ
ํ์ [STEP 1]
ํด๋์ค ์์ด ์๋ฐ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๋ง์ ์ฌ์ฉํ์ฌ ๊ตฌํํ ๊ณ์ฐ๊ธฐ
ํด๋์ค๋ฅผ ํ์ฉํ ๊ณ์ฐ๊ธฐ
ํ์ [STEP 2]
๊ฐ์ฒด ์งํฅ ๊ฐ๋
์ ์ ์ฉํ์ฌ ํด๋์ค ์ ์, ์ฐ์ฐ์ ์ํํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ ๊ณ์ฐ๊ธฐ
๋์ [STEP 3]
Java์ Enum, ์ ๋ค๋ฆญ, ๋๋ค & ์คํธ๋ฆผ์ ์ ์ฉํ ๊ณ์ฐ๊ธฐ
0๋จ๊ณ (๊ฐ๋ฐํ๊ฒฝ ์ธํ )
- IntelliJ IDEA ์ฌ์ฉ
- ์ Java ํ๋ก์ ํธ ์์ฑ → ํจํค์ง ๋ฐ ํด๋์ค ์ถ๊ฐ → ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ

Hello, Calculator!๊ฐ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ ๋ชจ์ต
์๊ฐํด๋ณด๊ธฐ
์ด๋ฒ ๊ณผ์ ๋ฅผ ๋ฐ๊ณ ๋จ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค
์ด๋ป๊ฒ ์ ๊ทผํ๊ณ ์ค๊ณํ๋์ง๊ฐ ๋ ์ค์ํ ๊ณผ์ ๋ผ๋ ๋๋์ ๋ฐ์๋ค.
๊ทธ๋์ ๋ฐ๋ก ์์ํ๊ธฐ๋ณด๋ค๋
์ด๋ป๊ฒ ํ์ด๋๊ฐ์ง๋ฅผ ๋จผ์ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ๋ค.
1. ์๊ตฌ์ฌํญ ์ ์
๋จ์ํ ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ๊ฐ ์๋๋ผ,
๊ดํธ์ ์ ๊ณฑ, ์ ๊ณฑ๊ทผ๊น์ง ์ฌ์ฉํ ์ ์๋ ๊ณ์ฐ๊ธฐ๋ฅผ ๋ชฉํ๋ก ์ค์ ํ๋ค.
- ๊ธฐ๋ณธ ์ฌ์น์ฐ์ฐ: ๋ง์ , ๋บ์ , ๊ณฑ์ , ๋๋์
- ๊ดํธ๋ฅผ ์ด์ฉํ ์ฐ์ฐ ์ฐ์ ์์ ์ฒ๋ฆฌ
- ์ ๊ณฑ ์ฐ์ฐ(^)๊ณผ ์ ๊ณฑ๊ทผ(sqrt)
- ๊ณต๋ฐฑ์ด ํฌํจ๋ ์์ ์ ๋ ฅ ๊ฐ๋ฅ
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ํ๋ค.
์ด๋ฒ ๊ณผ์ ์ ํ์ ๋ชฉํ๋ ๊ณ์ฐ ๋ก์ง ์์ฒด์ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์,
์ฐ์ ์ ์ฝ์์์ ์์์ ์
๋ ฅ๋ฐ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ์งํํ ์์ ์ด๋ค.
์ถํ GUI๋ก ๊ตฌํํ๋ ๊ฒ๋ ๋์ ํด๋ณด๊ณ ์ถ๋ค.
๋ํ ๊ณ์ฐ๊ธฐ์์ ๋ฐ์ํ ์ ์๋ ์์ธ ์ํฉ๋ ํจ๊ป ๊ณ ๋ คํ๋ค.
ํนํ 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ๋ ์๋ชป๋ ์์์ด ์
๋ ฅ๋๋ ๊ฒฝ์ฐ์๋
ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋์ง ์๊ณ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ ๋ค
๋ค์ ์
๋ ฅ์ ๋ฐ์ ์ ์๋๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์๋ค.
2. ์ค๊ณ
์
๋ ฅ๊ณผ ์ถ๋ ฅ์ main ๋ฉ์๋์์ ๋ด๋นํ๊ณ ,
์ค์ ๊ณ์ฐ ๋ก์ง์ ๋ณ๋์ Calculator ํด๋์ค์์ ์ฒ๋ฆฌํ๋๋ก ๋๋ ๊ณํ์ด๋ค.
๊ฐ ์ฐ์ฐ์ ๋ฉ์๋ ๋จ์๋ก ๋ถ๋ฆฌํด
ํ๋์ ๋ฉ์๋๊ฐ ํ๋์ ์ญํ ๋ง ํ๋๋ก ๊ตฌํํ๋ ค๊ณ ํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๊ฐ ๊ธธ์ด์ง๋๋ผ๋ ๊ฐ๋
์ฑ์ ์ ์งํ ์ ์๊ณ ,
์ดํ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ์์ ๋ ์ฌ์์ง ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
ํนํ ๊ดํธ์ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋จ์ํ if/else๋ก ๊ณ์ฐํ๋ ๋ฐฉ์๋ณด๋ค๋
๋ฌธ์์ด ํํ์ ์์์ ํด์ํด ๊ณ์ฐํ๋ ๊ตฌ์กฐ๊ฐ ํ์ํ๋ค๊ณ ํ๋จํ๋ค.
- ํ์ ๊ณผ์ ์์๋ ์ฝ์ ๊ธฐ๋ฐ ๊ณ์ฐ๊ธฐ ์์ฑ์ ๋ชฉํ๋ก ํ๋ค.
๊ณ์ฐ ๋ก์ง์ ์ค์ฌ์ผ๋ก ๊ตฌํํ๋ฉฐ ์๊ตฌ์ฌํญ๊ณผ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ฐ์ ์์ ์ ์ผ๋ก ์์ฑํ๋ค. - ๋์ ๊ณผ์ ์์๋ ํ์ ๊ณผ์ ์์ ๊ตฌํํ ๊ณ์ฐ ๋ก์ง์ ๊ธฐ๋ฐ์ผ๋ก
Enum, ์ ๋ค๋ฆญ, ๋๋ค, ์คํธ๋ฆผ์ ์ค์ ์ฝ๋์ ์ ์ฉํด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ค.
์ฐ์ฐ์ ํ์ ์ Enum์ผ๋ก ๊ด๋ฆฌํ๊ณ ,
๊ณ์ฐ๊ธฐ๋ ์ ๋ค๋ฆญ์ ์ ์ฉํด ์ ์๋ฟ ์๋๋ผ ์ค์ ํ์ ์ฐ์ฐ๊น์ง ํ์ฅํ๋ค.
์ฐ์ฐ ๊ฒฐ๊ณผ ์กฐํ ๊ธฐ๋ฅ์ ๋๋ค์ ์คํธ๋ฆผ์ ํ์ฉํด ๊ตฌํํ ์์ ์ด๋ค.
์ถ๊ฐ๋ก ๊ณ์ฐ ๋ก์ง์ ์ ์งํ ์ฑ ์ ๋ ฅ·์ถ๋ ฅ๋ง GUI๋ก ํ์ฅํด
์ฝ์ ๊ณ์ฐ๊ธฐ๋ฅผ GUI ๊ณ์ฐ๊ธฐ๋ก ์ฌ์ฌ์ฉํ๋ ๊ฒ๋ ๋ชฉํ๋ก ํ๊ณ ์๋ค.
Step 1 ๊ตฌํ ๋ฐฉํฅ
Step 1์์๋ ํด๋์ค ์์ด ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์ ์ํํ๋ ๊ณ์ฐ๊ธฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์๋ค.
๋ฐ๋ผ์ ๋ณ๋์ Calculator ํด๋์ค๋ฅผ ๋ง๋ค์ง ์๊ณ
App ํด๋์ค์ main ๋ฉ์๋ ์์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
๋ํ ๊ณ์ฐ๊ธฐ๊ฐ ํ ๋ฒ ๊ณ์ฐํ๊ณ ๋๋๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ,
์ฌ์ฉ์๊ฐ ์ข
๋ฃ๋ฅผ ์
๋ ฅํ๊ธฐ ์ ๊น์ง ๊ณ์ ๊ณ์ฐํ ์ ์๋๋ก
์ ์ฒด ๋ก์ง์ ๋ฐ๋ณต๋ฌธ ์์ ๊ตฌ์ฑํ๋ค.
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
// ์
๋ ฅ → ์ฐ์ฐ → ์ถ๋ ฅ → ์ข
๋ฃ ์ฌ๋ถ ํ์ธ
}
}
}
- Calculator ํด๋์ค ์์ด main ๋ฉ์๋์ ๊ตฌํ
- while(true)๋ก exit ์ ๋ ฅ ์ ๊น์ง ๋ฐ๋ณต
์ ๋ ฅ ์ฒ๋ฆฌ ๋ฐฉ์
์ฌ์ฉ์ ์
๋ ฅ์ Scanner๋ฅผ ์ฌ์ฉํ๋ค.
์ซ์ ์
๋ ฅ์ nextInt()๋ก ๋ฐ์ ๊ฐ๊ฐ num1, num2์ ์ ์ฅํ๊ณ ,
์ฐ์ฐ์๋ ๋ฌธ์์ด๋ก ์
๋ ฅ๋ฐ์ ๋ค charAt(0)์ ์ฌ์ฉํด ์ฒซ ๊ธ์๋ง char๋ก ๊ฐ์ ธ์๋ค.
System.out.print("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์: ");
int num1 = sc.nextInt();
System.out.print("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์: ");
int num2 = sc.nextInt();
System.out.print("์ฌ์น์ฐ์ฐ ๊ธฐํธ๋ฅผ ์
๋ ฅํ์ธ์ (+, -, *, /): ");
char operator = sc.next().charAt(0);
- ์ซ์ ์ ๋ ฅ: nextInt()
- ์ฐ์ฐ์ ์ ๋ ฅ: next() → charAt(0)
์ฐ์ฐ ์ฒ๋ฆฌ ๋ฐฉ์ (switch ์ฌ์ฉ)
์ฐ์ฐ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ณ์ฐ์ ์ํํด์ผ ํ๋ฏ๋ก switch๋ฌธ์ ์ฌ์ฉํ๋ค.
๊ฐ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ result ๋ณ์์ ์ ์ฅํ๊ณ ,
์ ์ ์ฐ์ฐ ์ฌ๋ถ๋ isValid ํ๋๊ทธ๋ก ๊ด๋ฆฌํ๋ค.
int result = 0;
boolean isValid = true;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
break;
default:
System.out.println("์ง์ํ์ง ์๋ ์ฐ์ฐ์์
๋๋ค.");
isValid = false;
}
- switch๋ฌธ์ผ๋ก ์ฐ์ฐ์ ๋ถ๊ธฐ
- ๊ฒฐ๊ณผ๋ result์ ์ ์ฅ
- ์ ์ ์ฌ๋ถ๋ isValid๋ก ํ๋จ
์์ธ ์ฒ๋ฆฌ (0์ผ๋ก ๋๋๊ธฐ / ์๋ชป๋ ์ฐ์ฐ์)
๋๋์
์ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ์ซ์๊ฐ 0์ด๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
num2 == 0 ์ฌ๋ถ๋ฅผ ๋จผ์ ๊ฒ์ฌํ๋ค.
case '/':
if (num2 == 0) {
System.out.println("๋๋์
์ฐ์ฐ์์ ๋ถ๋ชจ(๋ ๋ฒ์งธ ์ซ์)์ 0์ด ์
๋ ฅ๋ ์ ์์ต๋๋ค.");
isValid = false;
} else {
result = num1 / num2;
}
break;
- ๋ถ๋ชจ๊ฐ 0์ผ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง ์ถ๋ ฅ
- ์ ์ ์ฐ์ฐ์ด ์๋ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ ์ถ๋ ฅ ๋ฐฉ์ง
default:
System.out.println("์ง์ํ์ง ์๋ ์ฐ์ฐ์์
๋๋ค.");
isValid = false;
Step 1 ์ ์ฒด ์ฝ๋
package com.example.calculator.step1;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์: ");
int num1 = sc.nextInt();
System.out.print("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์: ");
int num2 = sc.nextInt();
System.out.print("์ฌ์น์ฐ์ฐ ๊ธฐํธ๋ฅผ ์
๋ ฅํ์ธ์ (+, -, *, /): ");
char operator = sc.next().charAt(0);
int result = 0;
boolean isValid = true;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == 0) {
System.out.println("๋๋์
์ฐ์ฐ์์ ๋ถ๋ชจ(๋ ๋ฒ์งธ ์ซ์)์ 0์ด ์
๋ ฅ๋ ์ ์์ต๋๋ค.");
isValid = false;
} else {
result = num1 / num2;
}
break;
default:
System.out.println("์ง์ํ์ง ์๋ ์ฐ์ฐ์์
๋๋ค.");
isValid = false;
}
if (isValid) {
System.out.println("๊ฒฐ๊ณผ: " + result);
}
System.out.println("๋ ๊ณ์ฐํ์๊ฒ ์ต๋๊น? (exit ์
๋ ฅ ์ ์ข
๋ฃ)");
String answer = sc.next();
if (answer.equals("exit")) {
System.out.println("๊ณ์ฐ๊ธฐ๋ฅผ ์ข
๋ฃํฉ๋๋ค.");
break;
}
}
sc.close();
}
}
๊ฒฐ๊ณผ


- ๊ธฐ๋ณธ์ ์ธ ์ฌ์น์ฐ์ฐ์ด ์ ์์ ์ผ๋ก ๋์ํจ์ ํ์ธํ๋ค.
- ์๋ชป๋ ์ฐ์ฐ์ ์
๋ ฅ์ด๋ 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ์๋
ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์ง ์๊ณ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ๊ตฌํํ๋ค.
'๐ฅ ๋ด์ผ๋ฐฐ์์บ ํ > ๐ ๊ณผ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step2 (0) | 2026.01.28 |
|---|---|
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step1 (0) | 2026.01.28 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ๊ณผ์ Step3 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ ๊ณผ์ Step2 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH1 ๋ง์ง ๊ด๋ฆฌ API ์ค๊ณํ๊ธฐ (0) | 2026.01.27 |