Ошибка слушателя - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет. Недавно начал учить Java и столкнулся с одной проблемой при написании калькулятора: в классе CalculatorEngine выдает ошибку в 28 строке. Как я понимаю, она получается когда я пытаюсь нажать клавишу арифметического действия, т.е +,-,*,/ не может преобразовать к типу double. Пытался добавлять условия, не помогло. Форма
Листинг программы
  1. /**
  2. * Created by Alex on 15.12.2016.
  3. */
  4. import javax.swing.*;
  5. import java.awt.*;
  6. public class Calculator {
  7. JButton button0 = new JButton("0");
  8. JButton button1 = new JButton("1");
  9. JButton button2 = new JButton("2");
  10. JButton button3 = new JButton("3");
  11. JButton button4 = new JButton("4");
  12. JButton button5 = new JButton("5");
  13. JButton button6 = new JButton("6");
  14. JButton button7 = new JButton("7");
  15. JButton button8 = new JButton("8");
  16. JButton button9 = new JButton("9");
  17. JButton buttonPoint = new JButton(".");
  18. JButton buttonEqualls = new JButton("=");
  19. JButton buttonMinus = new JButton("-");
  20. JButton buttonPlus = new JButton("+");
  21. JButton buttonMultiply = new JButton("*");
  22. JButton buttonDive = new JButton("/");
  23. JTextField display = new JTextField();
  24. Calculator(){
  25. // создали панель добавили менеджер компановки
  26. JPanel panelBoss = new JPanel();
  27. BorderLayout bdLayout = new BorderLayout();
  28. panelBoss.setLayout(bdLayout);
  29. // создаем текстовое поле ввода-вывода
  30. display.setHorizontalAlignment(SwingConstants.RIGHT); // вывод по правой стороне
  31. panelBoss.add("North",display);
  32. // создаем кнопки-цифры
  33. JPanel panelButtonNumber = new JPanel();
  34. GridLayout gdLayout = new GridLayout(4,3);
  35. panelButtonNumber.setLayout(gdLayout);
  36. panelButtonNumber.add(button1);
  37. panelButtonNumber.add(button2);
  38. panelButtonNumber.add(button3);
  39. panelButtonNumber.add(button4);
  40. panelButtonNumber.add(button5);
  41. panelButtonNumber.add(button6);
  42. panelButtonNumber.add(button7);
  43. panelButtonNumber.add(button8);
  44. panelButtonNumber.add(button9);
  45. panelButtonNumber.add(button0);
  46. panelButtonNumber.add(buttonPoint);
  47. panelButtonNumber.add(buttonEqualls);
  48. panelBoss.add("Center",panelButtonNumber);
  49.  
  50. // выводим кнопки операций (+,-,*,/)
  51. JPanel panelOper = new JPanel();
  52. GridLayout gdLayout2 = new GridLayout(4,1);
  53. panelOper.setLayout(gdLayout2);
  54. buttonPlus.setBackground(Color.orange);
  55. panelOper.add(buttonPlus);
  56. buttonMinus.setBackground(Color.orange);
  57. panelOper.add(buttonMinus);
  58. buttonMultiply.setBackground(Color.orange);
  59. panelOper.add(buttonMultiply);
  60. buttonDive.setBackground(Color.orange);
  61. panelOper.add(buttonDive);
  62. panelBoss.add("East",panelOper);
  63.  
  64. // создали фрейм, задали размер, размещение, вывели
  65. JFrame frame = new JFrame("Calculator");
  66. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  67. frame.setSize(250,250);
  68. frame.add(panelBoss);
  69. frame.setLocationRelativeTo(null);
  70. frame.setVisible(true);
  71. // подключаем слушателей
  72. CalculatorEngine calculEngine = new CalculatorEngine(this);
  73. button0.addActionListener(calculEngine);
  74. button1.addActionListener(calculEngine);
  75. button2.addActionListener(calculEngine);
  76. button3.addActionListener(calculEngine);
  77. button4.addActionListener(calculEngine);
  78. button5.addActionListener(calculEngine);
  79. button6.addActionListener(calculEngine);
  80. button7.addActionListener(calculEngine);
  81. button8.addActionListener(calculEngine);
  82. button9.addActionListener(calculEngine);
  83. buttonPoint.addActionListener(calculEngine);
  84. buttonEqualls.addActionListener(calculEngine);
  85. buttonPlus.addActionListener(calculEngine);
  86. buttonMinus.addActionListener(calculEngine);
  87. buttonMultiply.addActionListener(calculEngine);
  88. buttonDive.addActionListener(calculEngine);
  89.  
  90. }
  91. public static void main(String[] args){
  92. Calculator calculator = new Calculator();
  93. }
  94. }
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. /**
  5. * Created by Alex on 15.12.2016.
  6. */
  7. public class CalculatorEngine implements ActionListener {
  8. Calculator parent;
  9. double number; //промежуточная розиция
  10. double displayNumber = 0; // первое число
  11. double currentNumber = 0; // второе число
  12. char operNumber = ' '; // арифметическое действие
  13. CalculatorEngine(Calculator parent){
  14. this.parent = parent;
  15. }
  16. public void actionPerformed (ActionEvent evt){
  17. JButton clickedButton = (JButton)evt.getSource();
  18. String clickedButtonLabel = clickedButton.getText();
  19.  
  20. if (!"".equals(parent.display)) {
  21. displayNumber = Double.parseDouble(clickedButtonLabel);
  22. }
  23.  
  24. Object scr = evt.getSource();
  25. if(scr == parent.buttonPlus){
  26. operNumber = '+';
  27. currentNumber = displayNumber;
  28. } else if (scr == parent.buttonEqualls){
  29. if(operNumber == '+'){
  30. currentNumber +=displayNumber;
  31. parent.display.setText(Double.toString(currentNumber));
  32. }
  33. }
  34.  
  35. parent.display.setText(clickedButtonLabel);
  36. }
  37. }
Написал пока только для +. Как мне исправить ошибку?

Решение задачи: «Ошибка слушателя»

textual
Листинг программы
  1. displayNumber = Double.parseDouble(clickedButtonLabel);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут