Калькулятор в Джава - Java
Формулировка задачи:
Подскажите пожалуйста, написала калькулятор в Java, но при нажати на "цифровые кнопки", цифры в JTextField не отображаются, а при нажати на "равно" выдает 0.0 ! В чем может быть проблема??
package calculator; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator { JButton button0 = new JButton("0"); JButton button1 = new JButton("1"); JButton button2 = new JButton("2"); JButton button3 = new JButton("3"); JButton button4 = new JButton("4"); JButton button5 = new JButton("5"); JButton button6 = new JButton("6"); JButton button7 = new JButton("7"); JButton button8 = new JButton("8"); JButton button9 = new JButton("9"); JButton buttonPoint = new JButton("."); JButton buttonEqual = new JButton("="); JButton buttonPlus = new JButton("+"); JButton buttonMinus = new JButton("-"); JButton buttonMultiply = new JButton("*"); JButton buttonDivide = new JButton("/"); JPanel windowContent = new JPanel(); JTextField displayField = new JTextField(30); Calculator(){ // конструктор BorderLayout b1 = new BorderLayout(); windowContent.setLayout(b1); //менеджер расположение для панели windowContent.add("North", displayField); //добавляем дисплей в верхней части окна JPanel p1 = new JPanel(); GridLayout g1 = new GridLayout(4,3); p1.setLayout(g1); p1.add(button1); p1.add(button2); p1.add(button3); p1.add(button4); p1.add(button5); p1.add(button6); p1.add(button7); p1.add(button8); p1.add(button9); p1.add(button0); p1.add(buttonPoint); p1.add(buttonEqual); windowContent.add("Center",p1);//добавляем панель р1 в центр окна JPanel p2 = new JPanel(); GridLayout g12 = new GridLayout(4,1); p2.setLayout(g12); p2.add(buttonPlus); p2.add(buttonMinus); p2.add(buttonMultiply); p2.add(buttonDivide); windowContent.add("East",p2); JFrame frame = new JFrame("Calculator"); frame.setContentPane(windowContent); frame.pack(); frame.setVisible(true); ColculatorEngine colcEngine = new ColculatorEngine(this); button0.addActionListener(colcEngine); button1.addActionListener(colcEngine); button2.addActionListener(colcEngine); button3.addActionListener(colcEngine); button4.addActionListener(colcEngine); button5.addActionListener(colcEngine); button6.addActionListener(colcEngine); button7.addActionListener(colcEngine); button8.addActionListener(colcEngine); button9.addActionListener(colcEngine); buttonPoint.addActionListener(colcEngine); buttonEqual.addActionListener(colcEngine); buttonPlus.addActionListener(colcEngine); buttonMinus.addActionListener(colcEngine); buttonMultiply.addActionListener(colcEngine); buttonDivide.addActionListener(colcEngine); } public static void main(String[] args) { Calculator calc =new Calculator(); } } package calculator; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; public class ColculatorEngine implements ActionListener{ Calculator parent; char selectedAction ; double curretResult = 0; //Конструктор сохраняет ссылку на окно калькулятора в переменной экземпляра класса ColculatorEngine(Calculator parent){ this.parent = parent;// } public void actionPerformed(ActionEvent e) { JButton clickedButton = (JButton)e.getSource(); String dispFieldText = parent.displayField.getText(); double displayValue = 0; if(!"".equals(dispFieldText)){//получить число из дисплея калькулятора, если он нe пустой displayValue = Double.parseDouble(dispFieldText); } Object src = e.getSource(); // Для каждой кнопки " +,-,*,/" запомнить действие и сохранить текущее число в переменной curretResult, и очистить дисплей для ввода нового числа if(src == parent.buttonPlus){ selectedAction = '+'; curretResult = displayValue; parent.displayField.setText(""); }else if (src == parent.buttonMinus){ selectedAction = '-'; curretResult = displayValue; parent.displayField.setText(""); }else if (src == parent.buttonMultiply){ selectedAction = '*'; curretResult = displayValue; parent.displayField.setText(""); }else if (src == parent.buttonDivide){ selectedAction = '/'; curretResult = displayValue; parent.displayField.setText(""); }else if (src == parent.buttonEqual){ //Cовершаем арифметическое действие, в зависимости от selectedAction, обновить переменную curretResult и показать результат на дисплее if (selectedAction == '+'){ curretResult +=displayValue; //Сконвертировать результат в строку , добавляя его к пустой строке и показать его parent.displayField.setText(""+curretResult); }else if(selectedAction == '-'){ curretResult -=displayValue; parent.displayField.setText(""+curretResult); }else if(selectedAction == '/'){ curretResult /=displayValue; parent.displayField.setText(""+curretResult); }else if(selectedAction == '*'){ curretResult *=displayValue; parent.displayField.setText(""+curretResult); }else{ //Для всех цифровых кнопок присоединить надпись на кнопке к надписи в дисплее String clickedButtonLabel = clickedButton.getText(); parent.displayField.setText(dispFieldText+clickedButtonLabel); } } } }
Решение задачи: «Калькулятор в Джава»
textual
Листинг программы
package lesson_java_grafic_calculator; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; /** * Created by Александр on 03.01.2017. */ public class CalculatorEngine implements ActionListener { Calculator parent; char selectedAction = ' '; // +, -, /, или * double currentResult = 0; // Конструктор сохраняет ссылку на окно калькулятора // в переменной экземпляра класса CalculatorEngine(Calculator parent) { this.parent = parent; } public void actionPerformed(ActionEvent e) { //Обработка ошибок try { // Получить источник действия JButton clickedButton = (JButton) e.getSource(); String dispFieldText = parent.displayField.getText(); double displayValue = 0; // Получить число из дисплея калькулятора, // если он не пустой. // Восклицательный знак – это оператор отрицания if (!"".equals(dispFieldText)) { displayValue = Double.parseDouble(dispFieldText); } Object src = e.getSource(); // Для каждой кнопки арифметического действия // запомнить его: +, -, /, или *, сохранить текущее число // в переменной currentResult, и очистить дисплей // для ввода нового числа if (src == parent.buttonPlus) { selectedAction = '+'; currentResult = displayValue; parent.displayField.setText(""); } else if (src == parent.buttonMinus) { selectedAction = '-'; currentResult = displayValue; parent.displayField.setText(""); } else if (src == parent.buttonDel) { selectedAction = '/'; currentResult = displayValue; parent.displayField.setText(""); } else if (src == parent.buttonProiz) { selectedAction = '*'; currentResult = displayValue; parent.displayField.setText(""); } else if (src == parent.buttonEqual) { // Совершить арифметическое действие, в зависимости // от selectedAction, обновить переменную currentResult // и показать результат на дисплее if (selectedAction == '+') { currentResult += displayValue; // Сконвертировать результат в строку, добавляя его // к пустой строке и показать его parent.displayField.setText("" + currentResult); } else if (selectedAction == '-') { currentResult -= displayValue; parent.displayField.setText("" + currentResult); } else if (selectedAction == '/') { currentResult /= displayValue; parent.displayField.setText("" + currentResult); } else if (selectedAction == '*') { currentResult *= displayValue; parent.displayField.setText("" + currentResult); } } else { // Для всех цифровых кнопок присоединить надпись на // кнопке к надписи в дисплее String clickedButtonLabel = clickedButton.getText(); parent.displayField.setText(dispFieldText + clickedButtonLabel); } if(e.getSource() == parent.buttonPlusMinus ){ currentResult = - displayValue; parent.displayField.setText("" + currentResult); } // Обнуление дисплея калькулятора if (e.getSource() == parent.buttonReset) { parent.displayField.setText(null); } } catch (Exception e1){ parent.displayField.setText(null); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д