Spring & Java
카테고리 없음[8일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 본문
● 계산기 만들기
계산기 만들기 코드
1. Scanner 사용
2. swich 반복문 사용
3. 스캐너 변수 이름 calculatung
4. try 사용을 하는 이유는 예외 처리를 하기 위함이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner calculating = new Scanner(System.in);
System.out.println("=== 자바 계산기 만들기 ==");
while (true) { // 반복문
try { // 예외 처리를 하기 위해 try 문을 사용 한다.
// 첫번째 숫자 입력
System.out.println("1~9 사이의 숫자를 입력 하세요.");
System.out.print("입력: ");
String input = calculating.nextLine();
if (input.equals("n")) {
System.out.println("계산기를 종료 합니다.");
break;
}
int num1 = Integer.parseInt(input);
if (num1 < 1 || num1 > 9) {
System.out.println(" 1~9 사이의 숫자만 입력 가능합니다.");
continue;
}
// 연산자 입력
System.out.println("(+,-,*,/) 연산자를 입력하세요");
System.out.print("입력: ");
String op = calculating.nextLine(); // 연산자를
if (!op.matches("^[+\\-*/]$")) { // 아직 완벽하게 이해 못해서 gpt 사용
System.out.println(" 올바른 연산자 입력이 아닙니다.");
continue;
}
//두번째
System.out.println("1~9 사이의 숫자를 입력하세요");
System.out.print("입력: ");
String input2 = calculating.nextLine();
int num2 = Integer.parseInt(input2);
if (num2 < 0 || num2 > 9) {
System.out.println("1~9 사이의 숫자만 입력 가능합니다.");
continue;
}
int pad = 0;
boolean flag = false;
switch (op) {
case "+":
pad = num1 + num2;
break;
case "-":
pad = num1 - num2;
break;
case "*":
pad = num1 * num2;
break;
case "/":
if (num2 == 0){
System.out.println("0으로 나눌 수 없습니다!");
System.out.println();
continue;
}
pad = num1 / num2;
break;
}
System.out.println("==============");
System.out.println("결과: " + num1 + " " + op + /* 연산자 */ " " + num2 + " = " + pad);
System.out.println("==============");
System.out.println();
System.out.println(); // 줄바꾸기
System.out.println(" 계속 하시겠습니까? (y/n)");
String again = calculating.nextLine();
} catch (IndexOutOfBoundsException e) {
System.out.println(" 잘못된 입력 입니다. 숫자만 입력 하세요.");
calculating.nextLine();
} catch (NumberFormatException e) {
System.out.println(" 숫자만 입력 하세요 ");
}
}
calculating.close();
}
}
package github.calculating;
// 계산기 정리
// sacnner를 활용 했나? ㅇㅇ
// ZOOM 해설 메모
// 2025 11 - 20 해설 시작
// 1-1 Scanner
// 1-2 내 코드의 장점
// 1-3 타인의 코드 장점
// 1-4 내 코드를 설명 할 수 있다. 나는 반복문을 while를 사용 했으며 continue로 반복문 실행
// 1-5
// 2-1 반복문 (무한루프) 구성
// 2-1 while (true)
// 2-2 netxDouble 사용시 소수점까지 계산이 가능하기 때문에 nextDouble 쓰는게 유리하다.
// 2-3 default : case에서 아닌 경우
// continue; // while 처음으로 돌아가기
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner calculating = new Scanner(System.in);
System.out.println("=== 자바 계산기 만들기 ==");
while (true) { // 반복문
double num1;
try { // 예외 처리를 하기 위해 try 문을 사용 한다.
// 첫번째 숫자 입력
System.out.println("1~9 사이의 숫자를 입력 하세요 : ");
num1 = calculating.nextDouble();
} catch (InputMismatchException e) {
System.out.println("숫자만 입력해주세요.");
calculating.nextLine();
continue;
}
// 연산자 입력
System.out.println("(+, -, *, /) 연산자를 입력 하세요 : ");
String op = calculating.next();
double num2;
try {
System.out.println("1~9 사이의 숫자를 입력하세요");
num2 = calculating.nextDouble();
} catch (InputMismatchException e) {
System.out.println("숫자를 입력하세요");
calculating.nextLine();
continue;
}
double pad;
switch (op) {
case "+":
pad = num1 + num2;
break;
case "-":
pad = num1 - num2;
break;
case "*":
pad = num1 * num2;
break;
case "/":
if (num2 == 0) {
System.out.println(" 0은 나눌수 없습니다.");
continue;
}
pad = num1 / num2;
break;
default:
System.out.println("지원하는 연산자만 입력 하세요");
continue;
}
System.out.println("==============");
System.out.println("결과: " + num1 + " " + op + /* 연산자 */ " " + num2 + " = " + pad);
System.out.println("==============");
System.out.println();
System.out.println("계속 계산하시겠습니까? (Y/N): ");
String again = calculating.next();
if (again.equalsIgnoreCase("n")){
break;
}
}
System.out.println("계산기를 종료합니다.");
calculating.close();
}
}
TIL 적어 보기
- 공부하면서 집중을 깨뜨리는 요인(환경, 감정, 습관 등)을 점검하고 대처할 수 있는 아이디어를 적어보아요!
: 공부 하는동안 전화 오거나 흐름이 한번 끊어지면 다시 집중 하기 힘듭니다.
'내일배움캠프 사전 학습' 카테고리의 다른 글
| [7일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 (0) | 2025.11.18 |
|---|---|
| [6일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 (0) | 2025.11.17 |
| [5일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 (0) | 2025.11.14 |
| [5일차] [내일배움캠프 사전캠프] + 반복문 숙제 (0) | 2025.11.14 |
| [4일차] [내일배움캠프 사전캠프] + 스타터 노트 작성하기 (0) | 2025.11.13 |