본문 바로가기

JAVA

[Java] Lv_1 계산기 프로젝트

 

요구 사항

  • ⬜ 양의 정수(0 포함)를 입력받기 
    • ⬜ Scanner를 사용하여 양의 정수 2개(0 포함)를 전달 받을 수 있습니다. 
    • ⬜  양의 정수는 각각 하나씩 전달 받습니다. 
    • ⬜ 양의 정수는 적합한 타입으로 선언한 변수에 저장합니다. 
  • ⬜ 사칙연산 기호(➕,➖,✖️,➗)를 입력받기 
    • ⬜ Scanner를 사용하여 사칙연산 기호를 전달 받을 수 있습니다. 
    • ⬜ 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장합니다. (charAt(0)) 
  • ⬜ 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기 
    • ⬜ 키워드 : if switch 
    • ⬜ 사칙연산 기호에 맞는 연산자를 사용하여 연산을 진행합니다. 
    • ⬜ 연산 기호를 구분하기 위해 제어문을 사용합니다. (예를 들면 if, switch) 
    • ⬜ 연산 오류가 발생할 경우 해당 오류에 대한 내용을 정제하여 출력합니다. 
      • ⬜ ex) “나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.“ 
  • ⬜ 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기 
    • ⬜  키워드 : 무한으로 반복, 수정하기 (처음부터 무한 반복 ❌, 위 스텝별로 진행하며 수정) 
    • ⬜  반복문을 사용합니다. (예를 들어, for, while…) 
  • ⬜ 하나의 클래스에서 진행 

 


 

 

문제 풀이

더보기

App

package lv1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            try {
                System.out.print("첫 번째 숫자를 입력해주세요 : ");
                int firstNum = scanner.nextInt();

                System.out.print("사칙 연산 기호를 입력해주세요 : ");
                char operator = scanner.next().charAt(0);

                System.out.print("두 번째 숫자를 입력해주세요 : ");
                int secondNum = scanner.nextInt();
                scanner.nextLine();

                if (firstNum < 0 || secondNum < 0) {
                    System.out.println("양의 정수만 입력하세요");
                } else {
                    switch(operator) {
                        case '+': {
                            System.out.println(firstNum + " + " + secondNum + " = " + (firstNum + secondNum));
                            break;
                        }
                        case '-': {
                            System.out.println(firstNum + " - " + secondNum + " = " + (firstNum - secondNum));
                            break;
                        }
                        case '*': {
                            System.out.println(firstNum + " * " + secondNum + " = " + (firstNum * secondNum));
                            break;
                        }
                        case '/': {
                            if (secondNum != 0) {
                                System.out.println(firstNum + " / " + secondNum + " = " + ((double) firstNum / secondNum));
                            } else {
                                System.out.println("0으로 나눌 수 없습니다.");
                            }
                            break;
                        }
                        default: {
                            System.out.println("사칙 연산자를 입력해주세요.");
                        }
                    }
                }
            } catch (InputMismatchException e) {
                System.out.println("숫자만 입력해주세요!");
                scanner.nextLine();
            }

            System.out.print("더 계산하시겠습니까? (exit 입력 시 종료) ");
            if(scanner.nextLine().equals("exit")) return;
        }
    }
}

첫 번째 숫자와 두 번째 숫자를 입력받을 때, 숫자 외에 다른 문자를 받으면 InputMismatchException 오류가 생긴다.

  • try~catch 문을 통해 예외 처리를 진행하였다.

Scanner 클래스는 문자 하나를 받는 메서드가 없다. 따라서 scanner.next() 메서드를 통해 문자열로 받은 후, 문자열 메서드인 charAt(index)를 사용한다.

  • charAt(index) : index 번째에 있는 문자를 반환한다.

'JAVA' 카테고리의 다른 글

[Java] toString()  (0) 2025.04.18
[Java] Lv_2 계산기 프로젝트  (0) 2025.04.18
[Java] 스트림(Stream)  (0) 2025.04.17
[Java] 익명 클래스란?  (0) 2025.04.17
[Java] 람다(Lamda)  (0) 2025.04.17