мой калькулятор не умножает и не делит числа - PullRequest
0 голосов
/ 18 июня 2019

Я сделал калькулятор, который не умножает и не делит числа и дай мне исключение:

java.lang.NumberFormatException: для входной строки: "* 7"

плюс и минус не имеют никаких проблем

class ActionListeners implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        Object o = e.getSource();
        int n1 = 0;
        int n2 = 0;
        int indexno = 0;
        if (o == result) {

            String s = t1.getText();

            String s3 = "";
            String s4 = "";
            for (int b1 = 0; b1 < s.length(); ++b1) {
                if (s.charAt(b1) == '+') {
                    indexno = s.indexOf('+');
                    s3 = s.substring(0, indexno);
                    s4 = s.substring(indexno);
                    n1 = Integer.parseInt(s3);
                    n2 = Integer.parseInt(s4);
                    JOptionPane.showMessageDialog(null, n1 + n2);
                }
                if (s.charAt(b1) == '-') {
                    indexno = s.indexOf('-');
                    s3 = s.substring(0, indexno);
                    s4 = s.substring(indexno);
                    n1 = Integer.parseInt(s3);
                    n2 = Integer.parseInt(s4);
                    JOptionPane.showMessageDialog(null, n1 + n2);
                }
                if (s.charAt(b1) == '*') {
                    indexno = s.indexOf('*');
                    s3 = s.substring(0, s.indexOf('*'));
                    s4 = s.substring(indexno);
                    n1 = Integer.parseInt(s3);
                    n2 = Integer.parseInt(s4);
                    JOptionPane.showMessageDialog(null, n1 * n2);
                }
                if (s.charAt(b1) == '/') {
                    indexno = s.indexOf('/');
                    s3 = s.substring(0, s.indexOf('/'));
                    s4 = s.substring(indexno);
                    n1 = Integer.parseInt(s3);
                    n2 = Integer.parseInt(s4);
                    JOptionPane.showMessageDialog(null, n1 / n2);
                }
                if (s.charAt(b1) == '/' && n2 == 0) {
                    JOptionPane.showMessageDialog(null, "Error : cant divide by zero");
                }

            }

            t1.setText("");
        }

1 Ответ

0 голосов
/ 18 июня 2019

Единственная причина, по которой - работает, заключается в том, что JOptionPane.showMessageDialog(null, n1 + n2); ... обратите внимание, что вы анализируете унарные отрицательные значения в n2, а затем добавляете два значения; если бы вы сделали JOptionPane.showMessageDialog(null, n1 - n2);, вы бы тоже увидели одну ошибку в вычитании. Вы хотите s4 = s.substring(indexno + 1); в каждом из ваших if (s).

...