Je ne peux pas trouver la solution à mon code 0 * 2 = 2 ou 0/2 = 2 sur une calculatrice

Piccaboo:

Im ayant un problème dans le calculate (). Quand j'ouvre la calculatrice quand je presse à 0 - 2 ou 0 * 2 ou 0/2 il en résulte toujours au nombre ce que je suis entré avant le zéro. Si je ne fais pas que si le code sinon le premier numéro quand j'ouvrir mon compteur calculatrice ne marche pas. Aidez-moi s'il vous plaît im un débutant en matière de programmation.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.SwingConstants;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JLabel;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;


public class Calculator{

    private JFrame frame;
    private JButton btnX;
    private JButton button_1, button;
    private JButton button_2;
    private JLabel label;
    private JLabel label2;
    private JButton button_3;
    private JButton button_4;
    private JButton button_5;
    private JButton button_6;
    private JButton button_7;
    private JButton button_8;
    private JButton button_9, button_15;
    private JButton button_11, button_14;
    private JButton button_12, button_16;
    private JButton button_13, button_17;
    private JButton button_22;
    private Double result = 0.0; 
    private Double inverse;
    private Double squareRoot;
    private Double square;
    private Double percent;
    private boolean newin = true;
    private String arg = "";

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

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

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        ImageIcon image = new ImageIcon("D:/Programming/MyApps/src/1440353685_MB__calculator.png");
        frame = new JFrame();
        KeyListener l = new KeyListener() {
            @Override
            public void keyPressed(KeyEvent e) {
                switch (e.getKeyCode()) {
                case KeyEvent.VK_0 :
                case KeyEvent.VK_NUMPAD0 : button_9.doClick();
                break;
                case KeyEvent.VK_NUMPAD1 :
                case KeyEvent.VK_1 : button.doClick();
                break;
                case KeyEvent.VK_2 :
                case KeyEvent.VK_NUMPAD2 : button_1.doClick();
                break;
                case KeyEvent.VK_3 :
                case KeyEvent.VK_NUMPAD3 : button_2.doClick();
                break;
                case KeyEvent.VK_4 :
                case KeyEvent.VK_NUMPAD4 : button_3.doClick();
                break;
                case KeyEvent.VK_5 :
                case KeyEvent.VK_NUMPAD5 : button_4.doClick();
                break;
                case KeyEvent.VK_6 :
                case KeyEvent.VK_NUMPAD6 : button_5.doClick();
                break;
                case KeyEvent.VK_7 :
                case KeyEvent.VK_NUMPAD7 : button_6.doClick();
                break;
                case KeyEvent.VK_8 : if (e.isShiftDown()) button_14.doClick(); 
                else button_7.doClick();
                break;
                case KeyEvent.VK_NUMPAD8 : button_7.doClick();
                break;
                case KeyEvent.VK_9 :
                case KeyEvent.VK_NUMPAD9 : button_8.doClick();
                break;
                case KeyEvent.VK_PERIOD :
                case KeyEvent.VK_DECIMAL : button_13.doClick();
                break;
                case KeyEvent.VK_EQUALS : if(e.isShiftDown()) button_12.doClick();
                else button_17.doClick();
                break;
                case KeyEvent.VK_ENTER : button_17.doClick();
                break;
                case KeyEvent.VK_MINUS :
                case KeyEvent.VK_SUBTRACT : button_11.doClick();
                break;
                case KeyEvent.VK_C : button_16.doClick();
                break;
                case KeyEvent.VK_ADD : button_12.doClick();
                break;
                case KeyEvent.VK_MULTIPLY : button_14.doClick();
                break;
                case KeyEvent.VK_DIVIDE :
                case KeyEvent.VK_SLASH : button_15.doClick();
                break;
                case KeyEvent.VK_BACK_SPACE : btnX.doClick();
                break;
                case KeyEvent.VK_AMPERSAND : button_22.doClick();
                }

            }

            @Override
            public void keyReleased(KeyEvent e) {

            }

            @Override
            public void keyTyped(KeyEvent e) {
                // TODO Auto-generated method stub

            }
        };
        frame.setResizable(false);
        frame.setBounds(100, 100, 289, 452);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Calculator");
        frame.addKeyListener(l);
        frame.setIconImage(image.getImage());
        frame.getContentPane().setLayout(null);

        Border border = LineBorder.createGrayLineBorder();

        button = new JButton("1");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "1");
                newin = false;
            }
        });
        button.setBounds(10, 68, 47, 34);
        button.setFocusable(false);
        button.setContentAreaFilled(false);
        frame.getContentPane().add(button);

        btnX = new JButton("<X");
        btnX.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() > 0 && !label.getText().equals("0")) {
                    label.setText(label.getText().substring(0, label.getText().length()-1));
                }
                if (label.getText().length() == 0) label.setText("0");
            }
        });
        btnX.setBounds(224, 68, 49, 34);
        btnX.setFocusable(false);
        btnX.setToolTipText("Press \"Backspace\" instead");
        btnX.setContentAreaFilled(false);
        frame.getContentPane().add(btnX);

        button_1 = new JButton("2");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "2");
                newin = false;
            }
        });
        button_1.setBounds(59, 68, 47, 34);
        button_1.setFocusable(false);
        button_1.setContentAreaFilled(false);
        frame.getContentPane().add(button_1);

        button_2 = new JButton("3");
        button_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "3");
                newin = false;
            }
        });
        button_2.setBounds(108, 68, 47, 34);
        button_2.setFocusable(false);
        button_2.setContentAreaFilled(false);
        frame.getContentPane().add(button_2);

        label2 = new JLabel("");
        label2.setBounds(10, 15, 260, 14);
        label2.setOpaque(true);
        label2.setBackground(Color.WHITE);
        label2.setFont(new Font("Arial", Font.BOLD, 10));
        label2.setHorizontalAlignment(SwingConstants.RIGHT);

        label = new JLabel("0");
        label.setHorizontalAlignment(SwingConstants.RIGHT);
        label.setVerticalAlignment(SwingConstants.BOTTOM);
        label.setOpaque(true);
        label.setBackground(Color.white);
        label.setBorder(border);
        label.setLayout(new BorderLayout());
        label.setFont(new Font("Arial", Font.BOLD, 20));
        label.add(label2, BorderLayout.PAGE_START);
        label.setBounds(10, 11, 265, 42);
        frame.getContentPane().add(label);
        button_3 = new JButton("4");
        button_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0")) label.setText("");
                label.setText(label.getText() + "4");
                newin = false;
            }
        });
        button_3.setBounds(10, 113, 47, 34);
        button_3.setFocusable(false);
        button_3.setContentAreaFilled(false);
        frame.getContentPane().add(button_3);

        button_4 = new JButton("5");
        button_4.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "5");
                newin = false;
            }
        });     
        button_4.setBounds(59, 113, 47, 34);
        button_4.setFocusable(false);
        button_4.setContentAreaFilled(false);
        frame.getContentPane().add(button_4);

        button_5 = new JButton("6");
        button_5.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "6");
                newin = false;
            }
        });
        button_5.setBounds(108, 113, 47, 34);
        button_5.setFocusable(false);
        button_5.setContentAreaFilled(false);
        frame.getContentPane().add(button_5);

        button_6 = new JButton("7");
        button_6.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "7");
                newin = false;
            }
        });
        button_6.setBounds(10, 160, 47, 34);
        button_6.setFocusable(false);
        button_6.setContentAreaFilled(false);
        frame.getContentPane().add(button_6);

        button_7 = new JButton("8");
        button_7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "8");
                newin = false;
            }
        });
        button_7.setBounds(59, 160, 47, 34);
        button_7.setFocusable(false);
        button_7.setContentAreaFilled(false);
        frame.getContentPane().add(button_7);

        button_8 = new JButton("9");
        button_8.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "9");
                newin = false;
            }
        });
        button_8.setBounds(108, 160, 47, 34);
        button_8.setFocusable(false);
        button_8.setContentAreaFilled(false);
        frame.getContentPane().add(button_8);

        button_9 = new JButton("0");
        button_9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (label.getText().length() == 22) {
                    Toolkit.getDefaultToolkit().beep();
                    return;
                }
                if (label.getText().equals("0") || newin) label.setText("");
                label.setText(label.getText() + "0");
                newin = false;
            }
        });
        button_9.setFocusable(false);
        button_9.setContentAreaFilled(false);
        button_9.setBounds(59, 205, 47, 34);
        frame.getContentPane().add(button_9);

        JButton button_10 = new JButton("±");
        button_10.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (label.getText().equals("0")) return;
                if (label.getText().substring(0, 1).equals("-")) label.setText(label.getText().substring(1));
                else label.setText("-" + label.getText());
            }
        });
        button_10.setFocusable(false);
        button_10.setContentAreaFilled(false);
        button_10.setBounds(165, 68, 49, 34);
        frame.getContentPane().add(button_10);

        button_11 = new JButton("-");
        button_11.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (newin && !label2.getText().equals("")) {
                    String in = reverseString(label2.getText());
                    in = in.substring(1);
                    in = "-" + in;
                    label2.setText("");
                    label2.setText(reverseString(in));
                    arg = "-";
                } else {
                label2.setText(label2.getText() + "  " + label.getText() + "  -");
                calculate();
                arg = "-";
                label.setText(removeZeros(result));
                newin = true;
                }
            }
        });
        button_11.setFocusable(false);
        button_11.setContentAreaFilled(false);
        button_11.setBounds(165, 113, 49, 34);
        frame.getContentPane().add(button_11);

        button_12 = new JButton("+");
        button_12.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (newin && !label2.getText().equals("")) {
                    String in = reverseString(label2.getText());
                    in = in.substring(1);
                    in = "+" + in;
                    label2.setText("");
                    label2.setText(reverseString(in));
                    arg = "+";
                } else {
                label2.setText(label2.getText() + "  " + label.getText() + "  +");
                calculate();
                arg = "+";
                label.setText(removeZeros(result));
                newin = true;
                }
            }
        });
        button_12.setFocusable(false);
        button_12.setContentAreaFilled(false);
        button_12.setBounds(165, 157, 49, 82);
        frame.getContentPane().add(button_12);

        button_13 = new JButton(".");
        button_13.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < label.getText().length(); i++) {
                    char a = label.getText().charAt(i);
                    if (a == '.') return;
                }
                label.setText(label.getText() + ".");
            }
        });
        button_13.setFocusable(false);
        button_13.setContentAreaFilled(false);
        button_13.setBounds(108, 205, 47, 34);
        frame.getContentPane().add(button_13);

        button_14 = new JButton("x");
        button_14.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (newin && !label2.getText().equals("")) {
                    String in = reverseString(label2.getText());
                    in = in.substring(1);
                    in = "x" + in;
                    label2.setText("");
                    label2.setText(reverseString(in));
                    arg = "*";
                } else {
                label2.setText(label2.getText() + "  " + label.getText() + " x");
                calculate();
                arg = "*";
                label.setText(removeZeros(result));
                newin = true;
                }
            }
        });
        button_14.setFocusable(false);
        button_14.setContentAreaFilled(false);
        button_14.setBounds(224, 160, 49, 34);
        frame.getContentPane().add(button_14);

        button_15 = new JButton("/");
        button_15.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                if (newin && !label2.getText().equals("")) {
                    String in = reverseString(label2.getText());
                    in = in.substring(1);
                    in = "/" + in;
                    label2.setText("");
                    label2.setText(reverseString(in));
                    arg = "/";
                } else {
                label2.setText(label2.getText() + "  " + 
                removeZeros(Double.valueOf(label.getText())) + "  /");
                calculate();
                arg = "/";
                label.setText(removeZeros(result));
                newin = true;
                }
            }
        });
        button_15.setFocusable(false);
        button_15.setContentAreaFilled(false);
        button_15.setBounds(224, 205, 49, 34);
        frame.getContentPane().add(button_15);

        button_16 = new JButton("C");
        button_16.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                label.setText("0");
                label2.setText("");
                result = 0.0;
                arg = "";
                newin = false;
            }
        });
        button_16.setFocusable(false);
        button_16.setToolTipText("Press \"C\" instead");
        button_16.setContentAreaFilled(false);
        button_16.setBounds(224, 113, 49, 34);
        frame.getContentPane().add(button_16);

        button_17 = new JButton("=");
        button_17.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                calculate();
                label.setText(removeZeros(result));
                label2.setText("");
                arg = "";
                newin = true;
                result = 0.0;
            }
        });
        button_17.setFocusable(false);
        button_17.setContentAreaFilled(false);
        button_17.setBounds(10, 205, 47, 34);
        frame.getContentPane().add(button_17);

    button_22 = new JButton("1/x");
        button_22.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

             label2.setText(("reciproc"+ "("+label.getText()+")"));
                inverse = 1/Double.parseDouble(label.getText());
                label.setText(removeZeros(inverse));

            }
        });
        button_22.setFocusable(false);
        button_22.setContentAreaFilled(false);
        button_22.setBounds(76, 270, 63, 60);
        frame.getContentPane().add(button_22);

    }

    private void calculate() {
        if (result == 0) {
            result = Double.valueOf(label.getText());
            return;
        }
        switch (arg) {
        case "+" : result += Double.parseDouble(label.getText()); 
        break;
        case "-" : result -= Double.parseDouble(label.getText());
        break;
        case "*" : result *= Double.valueOf(label.getText());
        break;
        case "/" : result /= Double.valueOf(label.getText());
        break;
        }   
    }

    private String removeZeros(Double n) {
        String in = String.valueOf(n);
        while (in.indexOf(".") != -1) {
            if (in.substring(in.length() - 1).equals("0") ||
                    in.substring(in.length() - 1).equals("."))
                in = in.substring(0, in.length() - 1);
            else break;
        }
        return in;
    }

    private String reverseString(String input) {
        String output = "";
        for (int i = input.length() - 1; i > -1; i--) {
            output += input.charAt(i);
        }
        return output;
    }
}
Alex:

Le problème est que lorsque vous entrez un zéro suivi par une opération, puis entrez un opérande, votre variable « résultat » est égal à zéro, donc « calculate () » traiter cette situation comme vous ne l'avez pas quoi que ce soit encore entré, et ensembles seulement ' entraîner » au nouvel opérande au lieu d'effectuer '0 (fonctionnement) (opérande).

Vous pouvez le résoudre si vous ajoutez une nouvelle variable booléenne « IsClear », qui vous avez initialement défini sur true. Chaque fois que vous appuyez sur un bouton avec une opération que vous définissez cette variable à false. Dans votre méthode de calcul () remplacer

    if (result == 0) {
      result = Double.valueOf(label.getText());
      return;
    }

avec

    if (isClear) {
      result = Double.valueOf(label.getText());
      return;
    }

Vous devez également définir « IsClear » true lorsque vous appuyez sur la touche « C » pour effacer l'entrée.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=285986&siteId=1
conseillé
Classement