Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 13:41   #1
LeoDiz
Новичок
Джуниор
 
Регистрация: 04.12.2011
Сообщений: 2
По умолчанию Алгоритм выполнения операций над числами в одной строке.

Нужно провести арифметические операции с введенными числами, числа вводятся так: 1233+123*123/1233-12 и т.д. Я разбиваю строку на слова по знакам, потом перевожу их в числа, а вот что со знаками делать не знаю. Сначала думал находить ихние индексы и сравнивать какой меньший тот и будет первее выполняться но для этого нужно определенное число переменных, а операций не известно сколько будет, тем более нужно учитывать приоритет выполнения операций.
LeoDiz вне форума Ответить с цитированием
Старый 25.12.2012, 14:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

это же классическая задача (основа синтаксического анализа)!

почитайте вот теорию:
Вычисление значения арифметического выражения, заданного в инфиксной форме.

Введение в теорию синтаксического анализа

а вот, решения на Java:

http://habrahabr.ru/post/50139/

http://java-source.net/open-source/expression-languages

вплоть до такого экзотического решения:
Variables bound through ScriptEngine



пример через использование ScriptEngine:
Код:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");

    String ExprTest = "1233+123*123/1233-12 ";
    Object result = engine.eval("x = "+ExprTest+";");
    System.out.println(ExprTest + " = " + result);
    }

}

Последний раз редактировалось Serge_Bliznykov; 25.12.2012 в 15:12.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2012, 17:28   #3
LeoDiz
Новичок
Джуниор
 
Регистрация: 04.12.2011
Сообщений: 2
По умолчанию

Огромное спасибо! Буду сейчас читать.
LeoDiz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скорость выполнения операций crawter C# (си шарп) 6 12.03.2012 19:57
Скорость выполнения операций crawter Visual C++ 0 11.03.2012 15:42
Операций с целыми числами Uniskull C# (си шарп) 3 01.02.2012 17:20
действия над числами в строке designer999 Общие вопросы Delphi 14 01.10.2010 09:29
Время выполнения операций Alex Cones Общие вопросы Delphi 2 05.07.2010 21:51