AI를 활용한 개발이야기

windsurf에서 계산기 프로그램 만들기

함바퍼포 2025. 4. 3. 07:00
728x90
반응형
SMALL

|JAVA 계산기 프로그램

 
package com.calculator;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Calculator extends Application {
    private TextField display;
    private String currentNumber = "";
    private String operator = "";
    private double result = 0;
    private boolean startNewNumber = true;

    @Override
    public void start(Stage primaryStage) {
        // 계산기 디스플레이 생성
        display = new TextField();
        display.setEditable(false);
        display.setAlignment(Pos.CENTER_RIGHT);
        display.setStyle("-fx-font-size: 20px; -fx-background-color: #f0f0f0;");

        // 버튼 그리드 생성
        GridPane buttonGrid = new GridPane();
        buttonGrid.setHgap(5);
        buttonGrid.setVgap(5);
        buttonGrid.setPadding(new Insets(5));

        // 숫자 버튼 생성
        for (int i = 9; i >= 0; i--) {
            Button button = createButton(String.valueOf(i));
            buttonGrid.add(button, (9-i) % 3, (9-i) / 3);
        }

        // 연산자 버튼 생성
        Button plusBtn = createButton("+");
        Button minusBtn = createButton("-");
        Button multiplyBtn = createButton("×");
        Button divideBtn = createButton("÷");
        Button equalsBtn = createButton("=");
        Button clearBtn = createButton("C");
        Button decimalBtn = createButton(".");

        // 연산자 버튼 배치
        buttonGrid.add(plusBtn, 3, 0);
        buttonGrid.add(minusBtn, 3, 1);
        buttonGrid.add(multiplyBtn, 3, 2);
        buttonGrid.add(divideBtn, 3, 3);
        buttonGrid.add(decimalBtn, 2, 3);
        buttonGrid.add(equalsBtn, 1, 3);
        buttonGrid.add(clearBtn, 0, 3);

        // 레이아웃 구성
        VBox root = new VBox(10);
        root.setPadding(new Insets(10));
        root.getChildren().addAll(display, buttonGrid);
        root.setStyle("-fx-background-color: #ffffff;");

        // 씬 설정
        Scene scene = new Scene(root);
        primaryStage.setTitle("JavaFX Calculator");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private Button createButton(String text) {
        Button button = new Button(text);
        button.setMinSize(50, 50);
        button.setStyle("-fx-font-size: 18px;");
       
        button.setOnAction(e -> {
            switch (text) {
                case "C":
                    display.setText("");
                    currentNumber = "";
                    operator = "";
                    result = 0;
                    startNewNumber = true;
                    break;
                case "+":
                case "-":
                case "×":
                case "÷":
                    if (!currentNumber.isEmpty()) {
                        if (!operator.isEmpty()) {
                            calculate();
                        } else {
                            result = Double.parseDouble(currentNumber);
                        }
                        operator = text;
                        startNewNumber = true;
                    }
                    break;
                case "=":
                    if (!currentNumber.isEmpty() && !operator.isEmpty()) {
                        calculate();
                        operator = "";
                        startNewNumber = true;
                    }
                    break;
                case ".":
                    if (!currentNumber.contains(".")) {
                        currentNumber += text;
                        display.setText(currentNumber);
                    }
                    break;
                default:
                    if (startNewNumber) {
                        currentNumber = text;
                        startNewNumber = false;
                    } else {
                        currentNumber += text;
                    }
                    display.setText(currentNumber);
            }
        });
       
        return button;
    }

    private void calculate() {
        if (currentNumber.isEmpty()) return;
       
        double secondNumber = Double.parseDouble(currentNumber);
        switch (operator) {
            case "+":
                result += secondNumber;
                break;
            case "-":
                result -= secondNumber;
                break;
            case "×":
                result *= secondNumber;
                break;
            case "÷":
                if (secondNumber != 0) {
                    result /= secondNumber;
                } else {
                    display.setText("Error");
                    return;
                }
                break;
        }
        display.setText(String.valueOf(result));
        currentNumber = String.valueOf(result);
    }

    public static void main(String[] args) {
        launch(args);
    }
}

 

 

|자바 계산기 UI

<?xml version="1.0" encoding="UTF-8"?>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.calculator</groupId>
    <artifactId>calculator</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <javafx.version>17.0.2</javafx.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>${javafx.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.8</version>
                <configuration>
                    <mainClass>com.calculator.Calculator</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

 

java를 이용해서 계산기도 만들어주고

javaFX를 이용해서 폼도 꾸며주고 편하다.

 

728x90
반응형
LIST