С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980

Как суммировать значения строки?

18.11.2012, 15:18. Показов 1986. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. от решил поиграть с андроид. Хочу сделать калькулятор))

сделал кнопки, повесил(вроде бы) слушатель событий, и при нажатии на кнопку в TextView добавляется символ, на который я нажал...


вопрос вот в чем... в итоге в строке будет что то типа 1+1, но как это все суммировать? если я правильно понимаю, это же строка будет, а не цифры и операторы))

Добавлено через 17 секунд
может как то по умнее можно?))

Добавлено через 17 часов 3 минуты
народ, никто не знает, как это осуществить?))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2012, 15:18
Ответы с готовыми решениями:

Как суммировать значения в таблице
Доброе время суток! У меня база Аксес 2003, есть такая таблица: Месяц Год Поле4 Поле5 5 2010 1 ...

Как суммировать значения формы
Добрый день, объясните как реализовать суммирование в аксес 2007. Сделал базу по коммуналке. Хочу немного статистики прикрутить. сделал...

Как суммировать только отфильтрованные значения
Добрый день, Скажите, пожалуйста, как заставить excel считать сумму только тех ячеек, которые видны в конкретный момент времени....

4
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
18.11.2012, 19:33

Не по теме:

z-z, есть раздел по программированию в Android. Но, думаю, товарищ модератор перенесет туда тему, так что не нужно дублировать, просто запомните на будущее.



Да, действительно, у вас получится строка. Чтобы вычислить её как выражение, нужно её разобрать (процесс называется парсинг) и вычислить.

Рекомендую почитать материалы по теме "Обратная польская нотация" ("Обратная польская запись") и, чуть более широко, "Автоматы", "Конечные автоматы".

Можно поискать готовые решения для Java и прикрутить их к приложению. Не силен в Java, посмотрите в сторону вот этих двух штук. И да пребудет с Вами сила.
http://jeplite.sourceforge.net/
http://www.singularsys.com/jep/index.html
0
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 5
18.11.2012, 19:46
может быть есть смысл посмотреть в сторону Ruby или Python и для GUI - QT
0
z-z
170 / 169 / 56
Регистрация: 22.06.2011
Сообщений: 980
18.11.2012, 20:42  [ТС]
Phantom, спасибо)) век живи - век учись... чего только не увидишь))

нашел вроде код, добавил в свой код, но как то он странно работает. помогите разобраться, пожалуйста))

вот код преобразователя:

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
 // Метод перевода в обратную польскую нотацию
    private String inPolishNotation(final String formula)
    {
        String rezNotation = ""; // Результирующая запись
        final Stack stack = new Stack(); // Стек
        final Stack outString = new Stack(); // Стек выходной строки
 
        final int point = 0;
        for (int i = 0; i < formula.length(); i++)
        {
            if (formula.charAt(i) == ')')
            {
                while (String.valueOf(stack.peek()).charAt(0) != '(')
                {
                    outString.push(stack.pop()); // Записываем в выходную
                }
                // строку
                stack.pop(); // Удаляем саму скобку
            }
            if (formula.charAt(i) == '(')
            {
                stack.push('(');
            }
            if ((formula.charAt(i) >= 'A') && (formula.charAt(i) <= 'Z'))
            {
                // stack.push(formula.charAt(i));
                outString.push(formula.charAt(i));
            }
            if ((formula.charAt(i) == '+') || (formula.charAt(i) == '-')
                    || (formula.charAt(i) == '/')
                    || (formula.charAt(i) == '*'))
            {
                if (stack.size() == 0)
                {
                    stack.push(formula.charAt(i));
                }
                else
                    if (prior(formula.charAt(i)) > prior(String.valueOf(
                            stack.peek()).charAt(0)))
                    {
                        stack.push(formula.charAt(i));
                    }
                    else
                    {
                        while ((stack.size() != 0)
                                && (prior(String.valueOf(stack.peek())
                                        .charAt(0)) >= prior(formula
                                        .charAt(i))))
                        { // (OPERS!=NULL)&amp;&amp;(PRIOR(OPERS->c)>=PRIOR(a[k]))
                            outString.push(stack.pop());// outstring[point++]=DEL(&amp;OPERS);
                        }
                        stack.push(formula.charAt(i));
                    }
            }
        }
        for (int i1 = 0; i1 < outString.size(); i1++)
        {
            rezNotation = rezNotation + String.valueOf(outString.get(i1));
        }
        return rezNotation;
    }
 
    // Метод получения приоритета операции при формировании обратной польской
    // нотации
    private int prior(final char a)
    {
        switch (a)
        {
            case '*':
                return 3;
            case '/':
                return 3;
            case '-':
                return 2;
            case '+':
                return 2;
            case '(':
                return 1;
        }
        return 0;
    }
вставил этото метод просто в своем коде, и применил вот так:

Java
1
2
3
4
case R.id.bt_res: 
                String a = tablo.getText().toString();
                tablo.setText(inPolishNotation(a));
                break;
там много кнопок "слушается", поэтому всем кодом не стал мусорить))

проблема в чем... не выводятся цифры и знаки не все выводятся, то есть как то так:

inPolishNotation("А+В*С") выводит АВС
inPolishNotation("2+В*3") выводит В
inPolishNotation("++++") выводит +++
inPolishNotation("1+2*3") выводит пустую строку...

как с этим бороться?))

Добавлено через 8 минут
хм, немного разобрался, поправил строку 24 вот так:

Java
1
if ( ((formula.charAt(i) >= 'A') && (formula.charAt(i) <= 'Z')) || ((formula.charAt(i) >= '0') && (formula.charAt(i) <= '9')))
цифры вроде стал читать)) осталось разобраться, как он их считать умеет...))
0
18.11.2012, 21:54

Не по теме:

Цитата Сообщение от m0sk1t Посмотреть сообщение
может быть есть смысл посмотреть в сторону Ruby или Python и для GUI - QT
Это как Вы собрались на Ruby под Android писать?

Ну ладно на Python, через Scripting Layer for Android (естественно, это не Ъ-way и жуткий костыль для настоящих содомитов).

Ну и GUI на Qt - с помощью Necessitas (тогда уж не GUI, а всю программу).

Но на Ruby... Неужели на Ruboto? Разве этот проект не загнулся?
Или Вы хотите присобачить JRuby и JPython? Поясните, пожалуйста.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2012, 21:54
Помогаю со студенческими работами здесь

Как суммировать значения двух TextBox
Добрый день. Private Sub Command2_Click() Text2A.Text = Val(Text12.Text + Text13.Text) End Sub Создал кнопку и три...

Как суммировать значения ячеек в dataGridView
Помгите разобраться с datagridview c# ... Как сложть элементы в таблице datagridview c# например 1-го и 2-го столбиков?

Как суммировать значения ячеек определенного столбца
Дорогие форумчане нужна помощь. Имеется база данных localDB &quot;zpworkers.mdf&quot;, в ней имеется таблица &quot;ZP&quot;, в таблице есть...

Как Суммировать Значения На Основе Выбора Раскрывающихся Списков
Доброго дня всем форумачанам! Подскажите пожалуйста, как реализовать подсчёт. Исходные данные В таблице есть градация цен...

Как суммировать все значения записи через цикл?
Как суммировать все значения записи через цикл, если можно без использование SQL. Если с ним то объяснение как работать в делфи с ним....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru