자바 초급 단계에서 만들어 볼 수 있는 계산기 프로그램입니다. 실제 계산기같은 모양의 GUI는 아니고 타자로 숫자와 연산자를 입력합니다.

첫 번째 예제는 while문과 switch문을 이용하였습니다. while(true) 부분은 연산자를 입력받는 부분인데, 올바르지 않은 연산자를 입력하였을 경우 다시 입력받도록 하기 위한 것입니다. 올바른 연산자를 입력한 경우 break를 통해 while 부분을 종료하고, 종료 명령을 입력한 경우 System.exit(0)을 통해 현재 프로그램을 강제로 종료합니다.

import java.text.DecimalFormat;    // 소수점 표시용
import java.util.Scanner;
 
public class Calc_01 {
 
    public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        
        System.out.println("====계산기 프로그램====");
        System.out.println();
        
        String select;
        
        while(true)
        {
            System.out.println("종료는 q를 입력하시오.");
            System.out.print("연산자 입력 (+, -, *, /) >> " );
        
            select = s.nextLine();
 
            if(select.equals("q") || select.equals("Q") )
            {
                System.out.println("종료합니다.");
                System.exit(0);
            }
            else if (select.equals("+") || select.equals("-") 
                    || select.equals("*") || select.equals("/"))
                break;
            else
                System.out.println("연산자를 정확히 입력하세요. q를 입력하면 종료합니다.");
        }
                
        
        System.out.print("첫 번째 숫자 입력>> " );
        int num1 = Integer.parseInt(s.nextLine());
        
        System.out.print("두 번째 숫자 입력>> " );
        int num2 = Integer.parseInt(s.nextLine());
        
        double result = 0;
        
        switch(select) {
        case "+":
            result = (double) num1 + num2;
            break;
        case "-":
            result = (double) num1 - num2;
            break;
        case "*":
            result = (double) num1 * num2;
            break;
        case "/":
            result = (double) num1 / num2;
            break;
        }
        
        DecimalFormat df = new DecimalFormat("#.##"); // 소수점 둘째자리까지만 표기, .0인 경우 표시 안함
        
        System.out.println("\n====결 과====\n");
        System.out.println(num1 + " " + select + " " + num2 + " = " + df.format(result)); 
        
    }
 
}

 

참고로 double 등의 자료형에서 소수점 이하가 0인 경우 표시하지 않게 하는 방법, 예를 들어 변수 값이 3이면 3.0이 아닌 3으로 표기하고, 3.14인 경우 정상적으로 3.14로 표기하게 하는 방법은 다음과 같습니다.

import java.text.DecimalFormat; 

DecimalFormat df = new DecimalFormat("#.##");

// 사용법
sysout: df.format(변수명);

 

두 번째 예제는, 예제 1과 유사하나 계산기 프로그램이 계산이 한 번 끝났다 해도 바로 종료하지 않고 또 다른 계산 명령을 입력받도록, 즉 무한 반복되게 해보겠습니다.

import java.text.DecimalFormat;    // 소수점 표시용
import java.util.Scanner;
 
public class Calc_01 {
 
    public static void main(String[] args) {
 
        while(true) {
            Scanner s = new Scanner(System.in);
 
            System.out.println("====계산기 프로그램====");
            System.out.println();
 
            String select;
 
            while(true)
            {
                System.out.println("종료는 q를 입력하시오.");
                System.out.print("연산자 입력 (+, -, *, /) >> " );
 
                select = s.nextLine();
 
                if(select.equals("q") || select.equals("Q") )
                {
                    System.out.println("종료합니다.");
                    System.exit(0);
                }
                else if (select.equals("+") || select.equals("-") 
                        || select.equals("*") || select.equals("/"))
                    break;
                else
                    System.out.println("연산자를 정확히 입력하세요. q를 입력하면 종료합니다.\n");
            }
 
            System.out.print("첫 번째 숫자 입력>> " );
            int num1 = Integer.parseInt(s.nextLine());
 
            System.out.print("두 번째 숫자 입력>> " );
            int num2 = Integer.parseInt(s.nextLine());
 
            double result = 0;
 
            switch(select) {
            case "+":
                result = (double) num1 + num2;
                break;
            case "-":
                result = (double) num1 - num2;
                break;
            case "*":
                result = (double) num1 * num2;
                break;
            case "/":
                result = (double) num1 / num2;
                break;
            }
 
            DecimalFormat df = new DecimalFormat("#.##"); 
            // 소수점 둘째자리까지만 표기, .0인 경우 표시 안함
 
            System.out.println("\n====결 과====\n");
            System.out.println(num1 + " " + select + " " + num2 + " = " + df.format(result)); 
            System.out.println();
        }
    }
 
}

위 예제에서 정수 계산만이 아닌 소수점 계산까지 하고 싶으면 int num1 = Integer.parseInt(s.nextLine());부분을 double, Double.parseDouble로 바꾸면 됩니다. num1, num2int 대신 df.format(num x)등으로 바꾸면 되겠습니다.

 

Programming GIF - Find & Share on GIPHY

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: Java


1개의 댓글

Java 예제: 가위바위보 - BGSMM · 2019년 9월 17일 8:26 오후

[…] 별도의 메소드로 분리해 해당 작업을 처리하도록 히겠습니다. 이 예제는 자바 계산기의 내용과 […]

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다