Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 18.10.2010
Сообщений: 6

Calculator

18.10.2010, 09:15. Показов 1308. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Проблема вот в чем, когда нажимаю кнопки sqrt, ну или 1/x программа никак не реагирует, а если сперва нажать на кнопку sqrt, а потом на число и еще раз нажать на sqrt, то программа берет корень. Почему так? плз хелп ми

вот собственно и код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package calculator;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import static java.lang.Math.*;
 
/**
 * @version 1.0 2010-17-10
 * @author sula
 */
public class MainClass {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable(){
            public void run() {
                CalculatorFrame frame = new CalculatorFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
 
/**
 * Фрейм с панелью калькулятора.
 */
class CalculatorFrame extends JFrame {
    public CalculatorFrame() {
        setTitle("Calculator");
        //setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        CalculatorPanel panel = new CalculatorPanel();
        add(panel);
        pack();
    }    
    //public static final int DEFAULT_WIDTH = 300;
    //public static final int DEFAULT_HEIGHT = 200;
}
 
/**
 * Панель с кнопками калькулятора и элементом
 * для отображения результатов вычислений.
 */
class CalculatorPanel extends JPanel {
    public CalculatorPanel() {
        setLayout(new BorderLayout());
 
        result = 0;
        lastCommand = "=";
        start = true;
 
        // Добавление элемента для отображения результатов.
 
        display = new JTextField("0", SwingConstants.RIGHT);
        display.setEnabled(true);
        add(display, BorderLayout.NORTH);
 
        ActionListener insert = new InsertAction();
        ActionListener command = new CommandAction();
 
        // Размещение кнопок в виде сетки 4х4
        panel = new JPanel();
        panel.setLayout(new GridLayout(4, 6));
 
        addButton("MC", command);
        addButton("7", insert);
        addButton("8", insert);
        addButton("9", insert);
        addButton("/", command);
        addButton("sqrt", command);
 
        addButton("MR", command);
        addButton("4", insert);
        addButton("5", insert);
        addButton("6", insert);
        addButton("*", command);
        addButton("%", command);
 
        addButton("MS", command);
        addButton("1", insert);
        addButton("2", insert);
        addButton("3", insert);
        addButton("-", command);
        addButton("1/x", command);
 
        addButton("M+", command);
        addButton("0", insert);
        addButton("+/-", command);
        addButton(".", insert);
        addButton("=", command);
        addButton("+", command);
 
        add(panel, BorderLayout.CENTER);
    }
 
    /**
     * Добавление кнопки к центральной панели.
     * @param label Надпись на кнопке
     * @param listener Слушатель кнопки
     */
    private void addButton(String label, ActionListener listener) {
        JButton button = new JButton(label);
        button.addActionListener(listener);
        panel.add(button);
    }
 
 
    /**
     * При обработке события строка, связанная с кнопкой,
     * помещается в конец отображаемого текста
     */
    private class InsertAction implements ActionListener {
        public void actionPerformed (ActionEvent event) {
            String input = event.getActionCommand();
            if (start) {
                display.setText("");
                start = false;
            }
            display.setText(display.getText() + input);
        }
    }
 
    /**
     * При обработке события выполняется команда, которая
     * определятся строкой, связынной с кнопкой.
     */
    private class CommandAction implements ActionListener {
        public void actionPerformed (ActionEvent event) {
            String command = event.getActionCommand();
 
            if(start) {
                if(command.equals("-")) {
                    display.setText(command);
                    start = false;
                }
                else lastCommand = command;
            }
 
            else {
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
            }
        }
    }
 
    /**
     * Выполнение вычислений.
     * @param x Значение, накапливающее предыдузие рез-ты
     */
    public void calculate(double x) {
        if(lastCommand.equals("+")) result += x;
        else if (lastCommand.equals("-")) result -= x;
        else if (lastCommand.equals("*")) result *= x;
        else if (lastCommand.equals("/")) result /= x;
        else if (lastCommand.equals("=")) result = x;
        else if (lastCommand.equals("sqrt")) result = sqrt(x);
        else if (lastCommand.equals("1/x")) result = 1.0 / x;
        display.setText("" + result);
    }
 
    private JTextField display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2010, 09:15
Ответы с готовыми решениями:

Java calculator
помогите пожалуйста переделать код, чтобы он не суммировал а вычитал import java.awt.*; import java.applet.Applet; public class...

calculator II
привет! как сделать - x:=0; после нажатия кнопки x:=1; если еще раз нажать то прибавляется единица! при каждом нажатии кнопки...

Calculator
Помогите, пожалуйста:-[ надо решить задачку: Реализовать класс Calculator с полным набором арифметических операций, используя класс...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2010, 09:15
Помогаю со студенческими работами здесь

calculator
вопрос как изменить код что бы можно было , пользоваться приоритетами знаков , т.е 4+4*2 =12 а не 16 !??? #include<stdio.h> ...

Modular Calculator
Всем доброго времени суток. Вобщем задача следующая: Есть текстовый файл "data.txt" в котором есть следующие данные: 5 * 50 ...

Make Calculator
пожалуйста помогите искать ошибку <?php if (isset ($_POST )) { require_once "lib/functions.php"; $n_1 = $_POST; ...

Calculator SFML
ПОМОГИТЕ!!! Нужно написать калькулятор вычисления зароботной платы на C++ c графикой SFML, то есть чтоб было всего три графы, чистая з.п,...

console calculator
Писал консольный калькулятор. После введения всех переменных и типа производимого действия благополучно выкидывает из программы. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru