Progetto Calcolatrice in Java

Descrizione del Progetto

In questo progetto, creerai una calcolatrice in Java utilizzando Swing per l’interfaccia grafica. La calcolatrice sarà in grado di eseguire le operazioni base: addizione, sottrazione, moltiplicazione e divisione.

Requisiti

  1. Librerie Java: Utilizzare le librerie standard di Java.
  2. Interfaccia Utente: Creare un’interfaccia grafica utilizzando Swing.
  3. Funzionalità della Calcolatrice:
    • Eseguire le operazioni di base: addizione, sottrazione, moltiplicazione e divisione.
    • Visualizzare il risultato sul display della calcolatrice.
  4. Gestione degli Errori: Gestire divisioni per zero e altri possibili errori.

Struttura del Progetto

calcolatrice/
├── src/
│   ├── Main.java
│   └── Calcolatrice.java
└── README.md

Codice di Esempio

Main.java: Questo file contiene il punto di ingresso dell’applicazione.

public class Main {
    public static void main(String[] args) {
        Calcolatrice calcolatrice = new Calcolatrice();
        calcolatrice.setVisible(true);
    }
}

Calcolatrice.java: Questo file contiene l’implementazione della calcolatrice.

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

public class Calcolatrice extends JFrame {
    private JTextField display;
    private double primoNumero;
    private double secondoNumero;
    private String operazione;

    public Calcolatrice() {
        setTitle("Calcolatrice");
        setSize(400, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());

        display = new JTextField();
        display.setFont(new Font("Arial", Font.PLAIN, 24));
        display.setHorizontalAlignment(JTextField.RIGHT);
        display.setEditable(false);
        add(display, BorderLayout.NORTH);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(4, 4));

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

        for (String label : buttonLabels) {
            JButton button = new JButton(label);
            button.setFont(new Font("Arial", Font.PLAIN, 24));
            button.addActionListener(new ButtonClickListener());
            panel.add(button);
        }

        add(panel, BorderLayout.CENTER);
    }

    private class ButtonClickListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String command = e.getActionCommand();

            switch (command) {
                case "C":
                    display.setText("");
                    primoNumero = 0;
                    secondoNumero = 0;
                    operazione = "";
                    break;
                case "=":
                    secondoNumero = Double.parseDouble(display.getText());
                    double risultato = 0;
                    switch (operazione) {
                        case "+":
                            risultato = primoNumero + secondoNumero;
                            break;
                        case "-":
                            risultato = primoNumero - secondoNumero;
                            break;
                        case "*":
                            risultato = primoNumero * secondoNumero;
                            break;
                        case "/":
                            if (secondoNumero != 0) {
                                risultato = primoNumero / secondoNumero;
                            } else {
                                JOptionPane.showMessageDialog(null, "Errore: Divisione per zero");
                            }
                            break;
                    }
                    display.setText(String.valueOf(risultato));
                    break;
                case "+":
                case "-":
                case "*":
                case "/":
                    primoNumero = Double.parseDouble(display.getText());
                    operazione = command;
                    display.setText("");
                    break;
                default:
                    display.setText(display.getText() + command);
                    break;
            }
        }
    }
}

Istruzioni per l’Esecuzione

  1. Compilare il Progetto:

    javac src/Main.java src/Calcolatrice.java -d out
    
  2. Eseguire l’Applicazione:

    java -cp out Main
    

Estensioni Possibili

  1. Funzionalità Avanzate: Aggiungere funzionalità come il calcolo delle radici quadrate, potenze, ecc.
  2. Storico delle Operazioni: Implementare una funzionalità per tenere traccia delle operazioni eseguite.
  3. Tema Personalizzabile: Permettere agli utenti di cambiare il tema della calcolatrice (colori, font, ecc.).