Как произвести мат. вычисление строки “10+2”

379
17 мая 2017, 06:12

Делаю калькулятор, хочу что бы при нажатии клавиши = из текстового поля JTextarea считалась строка например 10+2 и затем производилось мат. вычисление. Пытался поэлементно перевести String->Int, но как быть с символом операции?

Answer 1

Если задача в том, чтобы вычислить простейшее выражение v1 +-*/ v2, то можно просто посимвольно пробежаться в цикле по исходной строке и сформировать в итоге три строки: первая и третья - операнды, вторая - операция. Проверить является ли строка или символ числом можно с помощью метода isDigit(). Получив символ операции используйте if-else или switch для определения, что это за операция и что нужно сделать впоследствии.

Если задача написать калькулятор любой строки с поддержкой приоритетов, множества операций и даже функций, то либо алгоритм на основе стека, который хорошо описан в книге Роберта Седжвика "Алгоритмы на Java", либо можно методом рекурсивного спуска, если знакомы чутка с теорией компиляторов.

Answer 2

Считать его в отдельную переменную и через switch реализовать выбор нужного действия.

Answer 3

Покопался на просторах интернета и нашел решение при помощи JavaScript:

public void actionPerformed(ActionEvent e) {

            String s1 = text.getText();
            ScriptEngineManager mgr = new ScriptEngineManager();
            ScriptEngine engine = mgr.getEngineByName("JavaScript");
            try {
               Object s2 = engine.eval(s1);
               text.setText(s2.toString());
            }
            catch (ScriptException e1){
                e1.printStackTrace();
            }
        }
READ ALSO
Как правильно использовать findViewById

Как правильно использовать findViewById

У меня примерно следующая иерархия id:

468
Конвертировать #FF00FFFF в 0x00FFFFFF

Конвертировать #FF00FFFF в 0x00FFFFFF

Как бы суть в заголовкенадо конвертировать строку #AARRGGBB в 16 ричное число 0xrrggbbaa?

363
Авторизация в WebView(Android)

Авторизация в WebView(Android)

Есть сайт http://studknutd

617
Как возвратить массив в методе в Java

Как возвратить массив в методе в Java

Здравствуйте, сильно не пинайте, но не могу понять как я могу вставить массив в return метода

385