Problema Calcolatrice

di il
4 risposte

Problema Calcolatrice

Ciao ragazzi, devo realizzare un'interfaccia grafica per una calcolatrice e devo inserire la possibilità di calcolare espressioni algebriche, come ad esempio (3+2)*6 il cui risultato vale 30. Quindi devo gestire i casi in cui moltiplicazioni e divisione vengano prima di addizione e sottrazione, e anche le parentesi, facendo svolgere prima le operazioni dentro. Ho già realizzato tutta la componente scientifica con le varie funzioni e devo solo implementare questa funzione.
Qualcuno ha qualche idea in merito?
Grazie mille a tutti!

4 Risposte

  • Re: Problema Calcolatrice

    mancio ha scritto:


    devo realizzare un'interfaccia grafica per una calcolatrice
    Interfaccia con framework AWT? Swing? Altro?

    mancio ha scritto:


    Ho già realizzato tutta la componente scientifica con le varie funzioni
    Prova a postare qualche pezzo di codice per far capire COME è fatta la tua parte "scientifica". Perché in base a come è stata fatta potrebbe essere semplice ... un po' meno semplice .. difficile integrarla in una GUI.

    mancio ha scritto:


    devo solo implementare questa funzione.
    In base al framework GUI di interesse, precisa anche quali sono le tue conoscenze in merito. Hai già realizzato in precedenza interfacce grafiche in Java? Non le hai mai fatte? Hai libri/guide/slide a riguardo? Saresti in grado eventualmente di leggere il tutorial ufficiale (inglese) Oracle?

    mancio ha scritto:


    Qualcuno ha qualche idea in merito?
    Precisa anche cosa ti aspetti qui. Che qualcuno ti scriva il codice? (sarebbe contro regolamento) Delle indicazioni?
  • Re: Problema Calcolatrice

    Questo é il codice, realizzato attraverso il plugin di Window Builder in Eclipse. Comunque ho già implementato qualche interfaccia grafica, dato che studio Java da un anno circa. Inoltre non volevo il codice completo, ma giusto qualche idea di implementazione. Ho letto in giro su internet che é utile usare lo stack, attraverso la PostFix Notation, solo che non ho la minima idea di come iniziare.



    import java.awt.Component.*;
    import java.awt.EventQueue;

    import javax.swing.JFrame;
    import javax.swing.JTextField;
    import java.awt.Font;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.SwingConstants;
    import java.awt.Color;
    import java.awt.Component;

    import javax.swing.UIManager;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.SystemColor;
    import java.awt.Window.Type;

    public class Calcolatrice {

    private JFrame frmCalcolatrice;
    private JTextField testoDisplay;
    double operando1;
    double operando2;
    double ris;
    String operazione;
    String risultato;


    /**
    * Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    Calcolatrice window = new Calcolatrice();
    window.frmCalcolatrice.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }

    /**
    * Create the application.
    */
    public Calcolatrice() {
    initialize();
    }

    /**
    * Initialize the contents of the frame.
    */
    private void initialize() {
    frmCalcolatrice = new JFrame("Calcolatrice");
    frmCalcolatrice.getContentPane().setBackground(Color.ORANGE);
    frmCalcolatrice.setAlwaysOnTop(true);
    frmCalcolatrice.setBackground(Color.WHITE);
    frmCalcolatrice.getContentPane().setFont(new Font("Lao MN", Font.BOLD, 13));
    frmCalcolatrice.setBounds(100, 100, 425, 337);
    frmCalcolatrice.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmCalcolatrice.getContentPane().setLayout(null);

    testoDisplay = new JTextField();
    testoDisplay.setBackground(Color.WHITE);
    testoDisplay.addKeyListener(new KeyAdapter() {
    //Suono del pc, se premo i tasti della tastiera
    @Override
    public void keyTyped(KeyEvent e) {
    char c = e.getKeyChar();
    if(!(Character.isDigit(c) || c == KeyEvent.VK_BACK_SPACE || c == KeyEvent.VK_DELETE))
    testoDisplay.getToolkit().beep();
    e.consume();
    }
    });

    testoDisplay.setHorizontalAlignment(SwingConstants.RIGHT);
    testoDisplay.setBounds(5, 6, 416, 50);
    testoDisplay.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(testoDisplay);
    testoDisplay.setColumns(10);

    //MOLTIPLICAZIONE//
    JButton btnMoltiplicazione = new JButton("×");
    btnMoltiplicazione.setBounds(314, 109, 50, 50);
    btnMoltiplicazione.setBackground(Color.WHITE);
    btnMoltiplicazione.setFont(new Font("Lao MN", Font.BOLD, 20));
    btnMoltiplicazione.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e)
    {
    operando1 = Double.parseDouble(testoDisplay.getText());
    testoDisplay.setText("");
    operazione = btnMoltiplicazione.getText();
    }
    });

    frmCalcolatrice.getContentPane().add(btnMoltiplicazione);

    //DIVISIONE//
    JButton btnDivisione = new JButton("÷");
    btnDivisione.setBounds(314, 60, 50, 50);
    btnDivisione.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    operando1 = Double.parseDouble(testoDisplay.getText());
    testoDisplay.setText("");
    operazione = btnDivisione.getText();
    }
    });
    btnDivisione.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnDivisione);

    //SOTTRAZIONE//
    JButton btnSottrazione = new JButton("-");
    btnSottrazione.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    operando1 = Double.parseDouble(testoDisplay.getText());
    testoDisplay.setText("");
    operazione = btnSottrazione.getText();
    }
    });
    btnSottrazione.setBounds(314, 158, 50, 50);
    //btnSottrazione.setBackground(Color.red);
    btnSottrazione.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnSottrazione);

    //ADDIZIONE//
    JButton btnAddizione = new JButton("+");
    btnAddizione.setBounds(314, 207, 50, 50);
    btnAddizione.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    operando1 = Double.parseDouble(testoDisplay.getText());
    testoDisplay.setText("");
    operazione = "+";
    }
    });
    btnAddizione.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnAddizione);

    //RISULTATO//
    JButton btnUguale = new JButton("=");
    btnUguale.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    operando2 = Double.parseDouble(testoDisplay.getText());
    if(operazione == "+")
    {
    ris = operando1 + operando2;
    risultato = String.format("%.2f", ris);
    testoDisplay.setText(risultato);


    }

    if(operazione == "-")
    {
    ris = operando1 - operando2;
    risultato =String.format("%.2f", ris);
    testoDisplay.setText(risultato);


    }

    if(operazione == "×")
    {
    ris = operando1 * operando2;
    risultato = String.format("%.2f", ris);
    testoDisplay.setText(risultato);

    }

    if(operazione == "÷")
    {
    ris = operando1/operando2;
    risultato = String.format("%.2f", ris);
    testoDisplay.setText(risultato);


    }

    if(operazione == "=")
    {
    ris = operando1;
    risultato = String.format("%.2f", ris);
    testoDisplay.setText(risultato);

    }


    if(operazione == "x^n")
    {
    ris = Math.pow(operando1, operando2);
    risultato = String.format("%.2f", ris);
    testoDisplay.setText(risultato);

    }

    if(risultato.contains(",")){
    String Nris = testoDisplay.getText().replace(",", ".");
    testoDisplay.setText(Nris);


    }
    approssimazione();
    }
    });
    btnUguale.setBounds(314, 256, 50, 50);
    btnUguale.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnUguale);

    //PERCENTUALE//
    JButton btnPercentuale = new JButton("%");
    btnPercentuale.setBackground(Color.WHITE);
    btnPercentuale.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = op/100;
    testoDisplay.setText(String.valueOf(op));


    }
    });
    btnPercentuale.setBackground(Color.ORANGE);
    btnPercentuale.setForeground(Color.BLACK);
    btnPercentuale.setBounds(362, 60, 59, 50);
    btnPercentuale.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnPercentuale);

    //NUMERO 9//
    JButton btn9 = new JButton("9");
    btn9.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText()+btn9.getText();
    testoDisplay.setText(numero);
    }
    });
    btn9.setBounds(266, 109, 50, 50);
    btn9.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn9);

    //NUMERO 6//
    JButton btn6 = new JButton("6");
    btn6.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn6.getText();
    testoDisplay.setText(numero);
    }
    });
    btn6.setBounds(266, 158, 50, 50);
    btn6.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn6);

    //NUMERO 3//
    JButton btn3 = new JButton("3");
    btn3.setBounds(266, 207, 50, 50);
    btn3.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn3.getText();
    testoDisplay.setText(numero);
    }
    });
    btn3.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn3);

    //VIRGOLA//
    JButton btnVirgola = new JButton(".");
    btnVirgola.setBounds(266, 256, 50, 50);
    btnVirgola.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    if(!testoDisplay.getText().contains("."))
    {
    testoDisplay.setText(testoDisplay.getText()+".");

    }
    }
    });
    btnVirgola.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnVirgola);

    //PLUS MINUS//
    JButton btnPlusMinus = new JButton("+/-");
    btnPlusMinus.setBounds(266, 60, 50, 50);
    btnPlusMinus.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = op*(-1);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnPlusMinus.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnPlusMinus);

    //NUMERO 8//
    JButton btn8 = new JButton("8");
    btn8.setBounds(217, 109, 50, 50);
    btn8.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText()+btn8.getText();
    testoDisplay.setText(numero);
    }
    });
    btn8.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn8);

    //NUMERO 5//
    JButton btn5 = new JButton("5");
    btn5.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn5.getText();
    testoDisplay.setText(numero);
    }
    });
    btn5.setBounds(217, 158, 50, 50);
    btn5.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn5);

    //NUMERO 2//
    JButton btn2 = new JButton("2");
    btn2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn2.getText();
    testoDisplay.setText(numero);
    }
    });
    btn2.setBounds(217, 207, 50, 50);
    btn2.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn2);


    //NUMERO 0//
    JButton btn0 = new JButton("0");
    btn0.setBackground(Color.WHITE);
    btn0.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn0.getText();
    testoDisplay.setText(numero);
    }
    });
    btn0.setBounds(165, 256, 102, 50);
    btn0.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn0);

    //BOTTONE CANCELLA//
    JButton btnClear = new JButton("C");
    btnClear.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    testoDisplay.setText(null);
    }
    });
    btnClear.setBounds(217, 60, 50, 50);
    btnClear.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnClear);

    //BOTTONE 7//
    JButton btn7 = new JButton("7");
    btn7.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn7.getText();
    testoDisplay.setText(numero);
    }
    });
    btn7.setBounds(165, 109, 50, 50);
    btn7.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn7);

    //BOTTONE 4//
    JButton btn4 = new JButton("4");
    btn4.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn4.getText();
    testoDisplay.setText(numero);
    }
    });
    btn4.setBounds(165, 158, 50, 50);
    btn4.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn4);

    //BOTTONE 1//
    JButton btn1 = new JButton("1");
    btn1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + btn1.getText();
    testoDisplay.setText(numero);
    }
    });
    btn1.setBounds(165, 207, 50, 50);
    btn1.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btn1);

    //BOTTONE ESADECIMALE//
    JButton btnHex = new JButton("hex"); //Esadecimali
    btnHex.setBounds(115, 60, 50, 50);
    btnHex.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    int a = Integer.parseInt(testoDisplay.getText());
    testoDisplay.setText(Integer.toString(a,16));
    }
    });
    btnHex.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnHex);

    //BOTTONE BINARIO//
    JButton btnBin = new JButton("bin"); //Binari
    btnBin.setBounds(66, 60, 50, 50);
    btnBin.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    int a = Integer.parseInt(testoDisplay.getText());
    testoDisplay.setText(Integer.toString(a,2));
    }
    });
    btnBin.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnBin);


    //BOTTONE RADICE QUADRATA//
    JButton btnRadQuad = new JButton("v");
    btnRadQuad.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.sqrt(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnRadQuad.setBounds(115, 109, 50, 50);
    btnRadQuad.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnRadQuad);

    //BOTTONE ESPONENZIALE//
    JButton btnEsponenziale = new JButton("e");
    btnEsponenziale.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText()+Math.E;
    testoDisplay.setText(String.valueOf(numero));
    }
    });
    btnEsponenziale.setBounds(115, 158, 50, 50);
    btnEsponenziale.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnEsponenziale);

    //BOTTONE LOG//
    JButton btnLog10 = new JButton("log");
    btnLog10.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.log10(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnLog10.setBounds(115, 207, 50, 50);
    btnLog10.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnLog10);

    //BOTTONE SENO//
    JButton btnSeno = new JButton("sinx");
    btnSeno.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.sin(op);
    testoDisplay.setText(String.valueOf(op));

    }
    });
    btnSeno.setBounds(362, 109, 59, 50);
    btnSeno.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnSeno);

    //BOTTONE RADICE CUBICA//
    JButton btnRadCub = new JButton("?");
    btnRadCub.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.pow(op,1.0/3.0);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnRadCub.setBounds(66, 109, 50, 50);
    btnRadCub.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnRadCub);

    //BOTTONE PI GRECO//
    JButton btnPiGreco = new JButton("p");
    btnPiGreco.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String numero = testoDisplay.getText() + Math.PI;
    testoDisplay.setText(String.valueOf(numero));
    }
    });
    btnPiGreco.setBounds(66, 158, 50, 50);
    btnPiGreco.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnPiGreco);

    //BOTTONE LN//
    JButton btnLn = new JButton("ln");
    btnLn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.log(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnLn.setBounds(66, 207, 50, 50);
    btnLn.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnLn);


    //BOTTONE COSENO//
    JButton btnCosx = new JButton("cosx");
    btnCosx.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.cos(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnCosx.setBounds(362, 158, 59, 50);
    btnCosx.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnCosx);


    //BOTTONE CANCELLA//
    JButton btnCancella = new JButton("?");
    btnCancella.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String cancella = null;
    if(testoDisplay.getText().length() > 0)
    {
    StringBuilder b = new StringBuilder(testoDisplay.getText());
    b.deleteCharAt(testoDisplay.getText().length()-1);
    cancella = b.toString();
    testoDisplay.setText(cancella);
    }
    }
    });
    btnCancella.setBounds(165, 60, 50, 50);
    btnCancella.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnCancella);

    JButton btnTanx = new JButton("tanx");
    btnTanx.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.tan(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    btnTanx.setBounds(362, 207, 59, 50);
    btnTanx.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnTanx);

    //BOTTONE POTENZA N-ESIMA//
    JButton btnPotenzaX = new JButton("x^n");
    btnPotenzaX.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    operando1 = Double.parseDouble(testoDisplay.getText());
    testoDisplay.setText("");
    operazione = btnPotenzaX.getText();
    }
    });
    btnPotenzaX.setBounds(66, 256, 50, 50);
    btnPotenzaX.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnPotenzaX);

    //BOTTONE POTENZA 2//
    JButton btnPotenza2 = new JButton("x^2");
    btnPotenza2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = op*op;
    testoDisplay.setText(String.valueOf(op));

    }
    });
    btnPotenza2.setBounds(115, 256, 50, 50);
    btnPotenza2.setFont(new Font("Lao MN", Font.BOLD, 20));
    frmCalcolatrice.getContentPane().add(btnPotenza2);

    //BOTTONE FATTORIALE//
    JButton btnFattoriale = new JButton("X!");
    btnFattoriale.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    int op = Integer.parseInt(String.valueOf(testoDisplay.getText()));
    op = fattoriale(op);
    testoDisplay.setText(String.valueOf(op));



    }



    });
    btnFattoriale.setBounds(362, 256, 59, 50);
    btnFattoriale.setFont(new Font("Lao MN", Font.BOLD, 18));
    frmCalcolatrice.getContentPane().add(btnFattoriale);

    JButton button = new JButton("tanh");
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.tanh(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    button.setForeground(Color.BLACK);
    button.setFont(new Font("Lao MN", Font.BOLD, 20));
    button.setBackground(Color.WHITE);
    button.setBounds(6, 60, 59, 50);
    frmCalcolatrice.getContentPane().add(button);
    //COSECANTE//
    JButton btnArcCos = new JButton("acos");
    btnArcCos.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.acos(op);
    testoDisplay.setText(String.valueOf(op));

    }
    });
    btnArcCos.setForeground(Color.BLACK);
    btnArcCos.setFont(new Font("Lao MN", Font.BOLD, 20));
    btnArcCos.setBackground(Color.WHITE);
    btnArcCos.setBounds(6, 158, 59, 50);
    frmCalcolatrice.getContentPane().add(btnArcCos);

    //ARCOSENO//
    JButton ArcSen = new JButton("asin");
    ArcSen.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.asin(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    ArcSen.setForeground(Color.BLACK);
    ArcSen.setFont(new Font("Lao MN", Font.BOLD, 20));
    ArcSen.setBackground(Color.WHITE);
    ArcSen.setBounds(6, 207, 59, 50);
    frmCalcolatrice.getContentPane().add(ArcSen);


    //ARCOTANGENTE//
    JButton btnArcTan = new JButton("atan");
    btnArcTan.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.atan(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });


    btnArcTan.setForeground(Color.BLACK);
    btnArcTan.setFont(new Font("Lao MN", Font.BOLD, 20));
    btnArcTan.setBackground(Color.WHITE);
    btnArcTan.setBounds(6, 256, 59, 50);
    frmCalcolatrice.getContentPane().add(btnArcTan);

    JButton button_4 = new JButton("sinh");
    button_4.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    double op = Double.parseDouble(String.valueOf(testoDisplay.getText()));
    op = Math.sinh(op);
    testoDisplay.setText(String.valueOf(op));
    }
    });
    button_4.setForeground(Color.BLACK);
    button_4.setFont(new Font("Lao MN", Font.BOLD, 20));
    button_4.setBackground(Color.WHITE);
    button_4.setBounds(5, 109, 59, 50);
    frmCalcolatrice.getContentPane().add(button_4);
    }

    //METODI DI SUPPORTO//
    public static int fattoriale(int x) {
    int f=1;
    for(int i=1; i<=x; i++) {
    f=f*i;
    }

    return f;

    }


    private void approssimazione()
    {
    if(testoDisplay.getText().endsWith(".00"))
    {
    testoDisplay.setText(testoDisplay.getText().replace(".00", ""));
    }
    else if(testoDisplay.getText().endsWith(".0"))
    {
    testoDisplay.setText(testoDisplay.getText().replace(".0", ""));
    }





    }
    }//class
  • Re: Problema Calcolatrice

    mancio ha scritto:


    Questo é il codice, realizzato attraverso il plugin di Window Builder in Eclipse.
    Non ho letto tutto tutto e dovrei compilarlo/provarlo per vedere il risultato a livello grafico.

    Non per sminuire/offendere quello che hai fatto, ci mancherebbe, ma ci sono comunque svariate inappropriate o comunque che rendono poco chiaro il sorgente.

    - confronti del tipo operazione == "+" sono inappropriati. Il contenuto delle stringhe (e degli oggetti in generale) si confronta per uguaglianza con equals() ... NON con == (che si basa invece solo sulla "identità" degli oggetti)

    - il codice è estremamente lungo e "fumoso". Ci sono molte ripetizioni.

    risultato = String.format("%.2f", ris); è ripetuto diverse volte.

    Parti come (btnNNN uno dei pulsanti):

    String numero = testoDisplay.getText() + btnNNN.getText();
    testoDisplay.setText(numero);

    sono ripetuti svariate volte.

    Guarda, te lo dico onestamente. Così non vai molto lontano ....
  • Re: Problema Calcolatrice

    Il codice risulta ripetitivo poi ho dovuto usare le stesse funzioni per diversi bottoni cambiandone solo qualche particolarità, comunque l'interfaccia funziona e diciamo che sono riuscito anche a implementare la funzione che dicevo. Sono comunque favorevole alle vostre opinioni, in merito al problema descritto. Grazie lo stesso
    (L'interfaccia comunque funziona)
Devi accedere o registrarti per scrivere nel forum
4 risposte