Калькулятор в Джава - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д