Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 6
1

Калькулятор java(AWT)

13.12.2020, 20:27. Просмотров 2481. Ответов 3

Не считает, не знаю что не так (помогите)
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
package com.udojava.evalex;
 
import java.math.BigDecimal;
import java.awt.*;
import java.awt.event.*;
 
public class Calculator
    extends Frame
    implements ActionListener, KeyListener {
 
    final int ROW = 6;
    final int COLUMN = 5;
 
    TextField tfInput ;
    Panel panel;
 
    String btnString[] = {"C", "←", "(", ")", "%",
                        "sin", "√", "x²", "xⁿ", "÷",
                        "cos", "7", "8", "9", "×",
                        "tan", "4", "5", "6", "-",
                        "ln", "1", "2", "3", "+",
                        "π", "e", "0", ".", "="};
    Button btn[] = new Button[ROW * COLUMN];
 
    public Calculator() {
        Font f = new Font("Garamond", Font.PLAIN, 18);
        tfInput = new TextField(10);
        tfInput.setFont(f);
        tfInput.addKeyListener(this);
        panel = new Panel();
        add(tfInput, "North");
        add(panel, "Center");
        panel.setLayout(new GridLayout(ROW, COLUMN));
        for (int i = 0; i < ROW * COLUMN; i++) {
            btn[i] = new Button(btnString[i]);
            btn[i].setFont(f);
            btn[i].addActionListener(this);
            btn[i].addKeyListener(this);
            panel.add(btn[i]);
        }
 
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
 
    public static void main(String[] args) {
        Calculator c = new Calculator();
        c.setTitle("Calculator");
        c.setSize(250, 300);
        c.setResizable(true);
        c.setVisible(true);
    }
 
    public void actionPerformed(ActionEvent ae) {
        String command = ae.getActionCommand();
        String input = tfInput.getText();
 
        if (command.equals("C")) {
            tfInput.setText("");
        }
        else if (command.equals("←")) {
            if (input.length() == 0) {
                return;
            }
            String text = input.substring(0, input.length() - 1);
            tfInput.setText(text);
        }
        else if (command.equals("√")) {
            tfInput.setText(input + "sqrt(");
        }
        else if (command.equals("x²")) {
            tfInput.setText(input + "^2");
        }
        else if (command.equals("xⁿ")) {
            tfInput.setText(input + "^");
        }
        else if (command.equals("÷")) {
            tfInput.setText(input + "/");
        }
        else if (command.equals("×")) {
            tfInput.setText(input + "*");
        }
        else if (command.equals("sin")) {
            tfInput.setText(input + "sin(");
        }
        else if (command.equals("cos")) {
            tfInput.setText(input + "cos(");
        }
        else if (command.equals("tan")) {
            tfInput.setText(input + "tan(");
        }
        else if (command.equals("ln")) {
            tfInput.setText(input + "log(");
        }
        else if (command.equals("π")) {
            tfInput.setText(input + "pi");
        }
        else if (command.equals("=")) {
            calculate();
        }
        else {
            tfInput.setText(input + command);
        }
    }
 
    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == 10) {
            calculate();
        }
    }
 
    private void calculate() {
        BigDecimal result = null;
        String input = tfInput.getText();
        Expression ex = new Expression(input);
        
        try {
            result = ex.eval();
            String text = result.toString();
            tfInput.setText(text);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            tfInput.setText(e.getMessage());
        }
    }
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2020, 20:27
Ответы с готовыми решениями:

Разработка и создание приложении с использованием пакета java.awt
На фабрике 24-часовой день разделен на три смены следующим образом: 1-я смена с 0000 до 0759...

Ошибка Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.NullPointerException at...

Exception in thread "main" java.lang.IllegalArgumentException: illegal component position at java.desktop/java.awt.Cont
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import...

java.awt.*;
Здравствуйте . пробую совершить простую задачу : вывести на экран наименьший прямоугольник , в...

3
Супер-модератор
Эксперт PythonЭксперт Java
6301 / 3561 / 1378
Регистрация: 21.10.2017
Сообщений: 10,398
13.12.2020, 20:42 2
Цитата Сообщение от garo21 Посмотреть сообщение
Expression ex = new Expression(input);
0
0 / 0 / 0
Регистрация: 23.06.2019
Сообщений: 6
13.12.2020, 22:45  [ТС] 3
А можете объяснить поподробнее? Не понимаю "Выражение нельзя превратить в тип" Expression ex = new Expression (input),оно получает входящее выражение и должно дать ответ (я так считаю). Или как?
0
Супер-модератор
Эксперт PythonЭксперт Java
6301 / 3561 / 1378
Регистрация: 21.10.2017
Сообщений: 10,398
14.12.2020, 00:00 4
Лучший ответ Сообщение было отмечено garo21 как решение

Решение

Цитата Сообщение от garo21 Посмотреть сообщение
поподробнее
Максимально подробно
https://docs.oracle.com/javase... ssion.html
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2020, 00:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка reference to List is ambiguous; both interface java.util.List in package java.util and class java.awt.List in...
Почему кгда я загружаю пакеты awt, utill вместе в одной проге при обьявлении елемента List я ловлю...

Работа с awt в java ME
Помогите пожалуйста, как использовать библиотеку java.awt в мобильных приложениях. Мне нужна...

Шрифт java.awt.List
Извините за прошлый пост с плохим кодом. Разобрался, что нужно исправить. Требуется шрифт в...

java.awt.Container.removeAll()
Почему после метода removeAll() не добавляются компоненты. JFrame a = new JFrame();...

Портирование java.awt на Android
Подскажите пожалуйста как можно осуществить портирование обычного Java приложения на Android....

Прослушивание кнопок в Java AWT
Добрый день! У меня есть проблема с прослушкой кнопок календаря. В моем календаре я сделал все...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.