🏕 내일배움캠프/[Assignment] Ch2-1

[Ch 2][계산기 과제] 3. 구현 - 클래스 없이 기본적인 연산을 수행할 수 있는 계산기 (절차지향 프로그래밍)

레이제로 2024. 9. 10. 03:54

3. 구현 - 클래스 없이 기본적인 연산을 수행할 수 있는 계산기

 • 해당 계산기 구현은 절차지향으로 진행됩니다.

 

1. 양의 정수(0포함)를 입력받기

2. 사칙연산 기호(,,✖️,)를 입력받기

3. 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기

import java.util.Scanner;

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

        // 1. 두 개의 피연산자(0 이상의 양의 정수) 입력받기
        // 입력받은 양의 정수는 적합한 타입으로 선언한 변수에 저장
        System.out.print("첫 번째 피연산자를 입력하세요.(단, 0 이상의 양의 정수만 가능): ");
        int num1 = sc.nextInt();
        if (num1 < 0) {
            System.out.println("음수가 입력되었습니다.");
            System.out.println("시스템을 종료합니다.");
            return;
        }
        System.out.print("두 번째 피연산자를 입력하세요.(단, 0 이상의 양의 정수만 가능): ");
        int num2 = sc.nextInt();
        if (num2 <0) {
            System.out.println("음수가 입력되었습니다.");
            System.out.println("시스템을 종료합니다.");
            return;
        }

        // 2. 사칙연산 기호(+, -, *, /) 입력받기
        // 입력받은 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장
        System.out.print("연산자를 입력하세요.(덧셈: +, 뺄셈: -, 곱셈: *, 나눗셈: /): ");
        char operator = sc.next().charAt(0);

        // 3. 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기
        double result = 0;

        switch (operator) {
            case '+':   // 덧셈 연산
                result = num1 + num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                break;
            case '-':   // 뺄셈 연산
                result = num1 - num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                break;
            case '*':   // 곱셈 연산
                result = num1 * num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                break;
            case '/':   // 나눗셈 연산
                if (num2 == 0) {    // 나눗셈 연산 오류
                    System.out.println("나눗셈 연산에서 분모(두 번째 피연산자)에 0이 입력될 수 없습니다.");
                } else {
                    result = (double) num1 / num2;
                    System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                }
                break;
            default:                // 연산자 입력 오류
                System.out.println("유효하지 않은 연산자입니다.");
        }
    }
}

 

 

4. 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기

import java.util.Scanner;

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

        // 4. 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기
        while (true) {
            // 두 개의 피연산자(0 이상의 양의 정수) 입력받기
            // 입력받은 양의 정수는 적합한 타입으로 선언한 변수에 저장
            System.out.print("첫 번째 피연산자를 입력하세요.(단, 0 이상의 양의 정수만 가능): ");
            int num1 = sc.nextInt();
            while (num1 < 0) {
                System.out.println("음수가 입력되었습니다.");
                System.out.print("다시 입력하세요.: ");
                num1 = sc.nextInt();
            }
//            if (num1 < 0) {
//                System.out.println("음수가 입력되었습니다.");
//                System.out.println("시스템을 종료합니다.");
//                return;
//            }
            System.out.print("두 번째 피연산자를 입력하세요.(단, 0 이상의 양의 정수만 가능): ");
            int num2 = sc.nextInt();
            while (num2 < 0) {
                System.out.println("음수가 입력되었습니다.");
                System.out.print("다시 입력하세요.: ");
                num2 = sc.nextInt();
            }
//            if (num2 < 0) {
//                System.out.println("음수가 입력되었습니다.");
//                System.out.println("시스템을 종료합니다.");
//                return;
//            }

            // 사칙연산 기호(+, -, *, /) 입력받기
            // 입력받은 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장
            System.out.print("연산자를 입력하세요.(덧셈: +, 뺄셈: -, 곱셈: *, 나눗셈: /): ");
            char operator = sc.next().charAt(0);

            // 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기
            double result = 0;

            switch (operator) {
                case '+':   // 덧셈 연산
                    result = num1 + num2;
                    System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                    break;
                case '-':   // 뺄셈 연산
                    result = num1 - num2;
                    System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                    break;
                case '*':   // 곱셈 연산
                    result = num1 * num2;
                    System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                    break;
                case '/':   // 나눗셈 연산
                    if (num2 == 0) {    // 나눗셈 연산 오류
                        System.out.println("나눗셈 연산에서 분모(두 번째 피연산자)에 0이 입력될 수 없습니다.");
                    } else {
                        result = (double) num1 / num2;
                        System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
                    }
                    break;
                default:                // 연산자 입력 오류
                    System.out.println("유효하지 않은 연산자입니다.");
            }

            System.out.println("연산을 계속 진행하시겠습니까? ('exit' 입력 시 종료)");
            if (sc.next().equals("exit")) {
                return;
            }
        }
    }
}