본문 바로가기

자바(java)

계산기: 기본적인 수학 연산을 수행하는 간단한 계산기를 디자인합니다.

반응형

계산기: 자바 기반 개발

1. 내용 설명

이 프로그램은 자바를 사용하여 만든 간단한 계산기 애플리케이션입니다. 사용자는 수학적 연산을 위한 숫자와 연산자를 입력할 수 있으며, 기본적인 연산인 덧셈, 뺄셈, 곱셈, 나눗셈을 수행할 수 있습니다. 연산 결과는 인터페이스에 즉시 표시됩니다.

2. 프로그램 간 사용 함수 설명

  • createAndShowGUI(): 사용자 인터페이스를 생성하고 보여줍니다. 숫자와 연산자 버튼, 결과를 표시하는 텍스트 필드를 포함합니다.
  • addActionListeners(): 버튼에 액션 리스너를 추가하여 버튼이 클릭될 때마다 적절한 작업을 수행합니다.
  • performOperation(): 사용자의 입력에 따라 적절한 수학 연산을 수행하고 결과를 반환합니다.

3. 코딩 내용

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator {
    private JFrame frame;
    private JTextField resultField;
    private JPanel buttonPanel;
    private double result = 0;
    private String operator = "=";
    private boolean calculating = true;

    public Calculator() {
        createAndShowGUI();
    }

    private void createAndShowGUI() {
        frame = new JFrame("Calculator");
        resultField = new JTextField("0", 12);
        resultField.setEditable(false);

        buttonPanel = new JPanel();
        String[] buttonLabels = {
            "7", "8", "9", "/",
            "4", "5", "6", "*",
            "1", "2", "3", "-",
            "0", "=", "C", "+"
        };

        for (String label : buttonLabels) {
            JButton button = new JButton(label);
            button.addActionListener(e -> buttonClicked(e));
            buttonPanel.add(button);
        }

        frame.setLayout(new BorderLayout());
        frame.add(resultField, BorderLayout.NORTH);
        frame.add(buttonPanel, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    private void buttonClicked(ActionEvent e) {
        String command = e.getActionCommand();
        if ('0' <= command.charAt(0) && command.charAt(0) <= '9' || command.equals(".")) {
            if (calculating) {
                resultField.setText(command);
            } else {
                resultField.setText(resultField.getText() + command);
            }
            calculating = false;
        } else {
            if (calculating) {
                if (command.equals("-")) {
                    resultField.setText(command);
                    calculating = false;
                } else {
                    operator = command;
                }
            } else {
                double x = Double.parseDouble(resultField.getText());
                calculate(x);
                operator = command;
                calculating = true;
            }
        }
    }

    private void calculate(double n) {
        switch (operator) {
            case "+": result += n; break;
            case "-": result -= n; break;
            case "*": result *= n; break;
            case "/": result /= n; break;
            case "=": result = n; break;
        }
        resultField.setText("" + result);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(Calculator::new);
    }
}

 

 

4. 전문용어

  • JFrame: Swing GUI 컴포넌트의 윈도우 프레임입니다.
  • JTextField: 사용자의 텍스트 입력을 받는 필드입니다.
  • JButton: 클릭할 수 있는 버튼 컴포넌트입니다.
  • ActionListener: 버튼 클릭과 같은 이벤트에 반응하기 위한 리스너 인터페이스입니다.
  • BorderLayout: 컴포넌트를 북, 남, 동, 서, 중앙의 영역에 배치하는 레이아웃 매니저입니다.

5. 라이브러리 추가 및 실행 방법

  • 본 프로그램은 자바 표준 라이브러리의 Swing 컴포넌트를 사용합니다.

컴파일:
javac Calculator.java

 

실행:
java Calculator

반응형