계산기 Lv.1

하늘·2025년 2월 28일

Spring 부트캠프

목록 보기
15/18

Lv 1. 클래스 없이 기본적인 연산을 수행할 수 있는 계산기 만들기

package example.v1;

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;

public class App {

    public static void main(String[] args) {
        // 입력을 받기 위한 Scanner 객체. System.in을 사용해서 키보드 입력을 받음
        Scanner sc = new Scanner(System.in);
        // 소수점 둘째 자리까지 표시 (DecimalFormat 객체 사용)
        DecimalFormat df = new DecimalFormat("0.00");
        // 소수점 반올림 하지않고 버림( ex | 1.2555 -> 1.25로 표시)
        df.setRoundingMode(RoundingMode.DOWN);

        while(true){ // 계산기를 계속 실행하기 위해 무한 루프
            System.out.print("첫 번째 숫자를 입력하세요:");
            // nextDouble()처럼 숫자 입력 메서드는 숫자만 읽고 입력 후 남아 있는
            // 개행 문자(\n)를 버퍼에 남겨둬서 nextLine()를 사용해서 버퍼를 비움
            double num1 = sc.nextDouble();
            sc.nextLine();

            System.out.print("사칙연산의 기호를 입력하세요(+, -, *, /) : ");
            char operator = sc.next().charAt(0);
            sc.nextLine();

            System.out.print("두 번째 숫자를 입력하세요:");
            double num2 = sc.nextDouble();
            sc.nextLine();

            double result = 0; // 계산 결과를 저장하는 변수
            boolean validOperation = true; //연산이 유효한지 체크

            switch(operator){
                case '+': // 더하기 연산
                    result = num1 + num2;
                    break;
                case '-': // 빼기 연산
                    result = num1 - num2;
                    break;
                case '*': // 곱하기 연산
                    result = num1 * num2;
                    break;
                case '/': // 나누기 연산
                    if (num2 != 0){ // 0으로 나누기 불가
                        result = num1 / num2;
                    } else {
                        System.out.println("0으로 나눌 수 없습니다. 다시 입력하세요.");
                        validOperation = false;
                    }
                    break;
                default:
                    System.out.println("유효하지 않은 연산자입니다. 다시 입력하세요.");
                    validOperation = false;
                    break;
            }
            if(!validOperation){ // 유효하지 않은 연산이면 처음으로 돌아감(잘못된 입력을 하면 다시 숫자랑 연사자를 입력받으로 돌아가는거)
                continue;
            }

            System.out.println("결과는 : " + df.format(result)); // 계산된 결과 출력(소수점 둘째 자리까지 표시)
            System.out.print("계산기 종료(exit 입력 시 종료, Yes 입력 시 계산 계속) : ");
            String str = sc.nextLine();
            if(str.equals("exit")){
                System.out.print("계산 종료");
                break;
            } else{
                System.out.println("계산 계속"); // "exit"가 아니면 계산 계속 진행
            }
        }
        sc.close(); // Scanner 객체 닫기
    }

}

실행결과

숫자와 사칙연산 기호를 입력하면 결과 값이 나오고 exit를 입력하면 계산종료 Yes를 누르면 계산을 계속 할 수 있다.

3개의 댓글

comment-user-thumbnail
2025년 2월 28일

오.. 드디어 초심찾으셨네요! 다섯 글자로 요약한 정보 잘 보고 갑니다~ 오늘도 고생하셨습니다~

답글 달기
comment-user-thumbnail
2025년 2월 28일

드디어 초심을 찾으신것 같아 정말 다행이네요

답글 달기
comment-user-thumbnail
2025년 3월 4일

다른 분들은 아직 못찾으셨나 보군요 제 눈엔 똑똑히 보입니다. 저 5글자에 무수히 많은 경험이 들어가있다는 걸. 존경합니다.
역시 단 5글자로 모든 걸 표현하다니
당신의 예술성이란..

답글 달기