Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Опа!!
16 / 16 / 0
Регистрация: 30.09.2009
Сообщений: 89
#1

textView как "экран" программы-калькулятора - Программирование Android

09.08.2011, 13:21. Просмотров 3049. Ответов 8
Метки нет (Все метки)

День добрый. Есть компонент textView, он используется для ввода цифр в программе-калькуляторе. Простая задача оказалась для меня нерешаемой - взять значение из textView, перевести его в double, умножить\сложить\разделить на другое, преобразовать и положить обратно в textView

Java
1
2
3
4
5
double value = Double.parseDouble(cBuf.toString());
double result = Double.parseDouble(tv.getText().toString());
result += value;
                
tv.setText((CharSequence)String.valueOf(result));
вроде бы все логично и верно, но приложение вылетает с Force Close

пробовал массу других вариантов преобразований - желаемого результата так и не получил. Подскажите, где я не прав? Еще раз напомню - взять значение из textView (там могут быть либо цифры либо цифра.цифра), преобразовать его в числовой формат (double), умножить (сложить, вычесть и т.д.) на другое значение (в моем случае оно тоже преобразовывается в числофой формат все из того же CharSequence, возвращаемого getText()) и положить результат операции обратно в textView через .setText()

Добавлено через 2 минуты
.. более того, вылетает даже с int:

Java
1
2
3
4
5
int buf1 = Integer.parseInt(cBuf.toString());
int buf2 = Integer.parseInt(tv.getText().toString());               
int result = buf1 + buf2;
 
tv.setText((CharSequence)Integer.toString(result));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 13:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос textView как "экран" программы-калькулятора (Программирование Android):

Как сделать вывод типа "25.000" в textView? - Программирование Android
Добрый день! Подскажите, как сделать вывод в TextView числа в таком формате, чтоб три нуля (Тысячи) отделялись точкой?

Вывести символ "градус" в TextView - Программирование Android
Можно ли в строке вывести число со степенью или температуру в градусах, чтоб возле числа температуры был кружок градусов, если да то как?

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

Как вызвать из программы системное окно "Точка доступа WLAN"? - Программирование Android
Подскажите пожалуйста как вызвать из программы системное окно "Точка доступа WLAN"? Есть программа "Switch Network", которая вызывает окно...

Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." - Программирование Android
Здравствуйте, Можно ли сделать приложение на весь экран, и убрать от туда вспомогательные кнопки "Назад, Главное окно..." или же хотя бы...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример

8
petruchodd
09.08.2011, 14:11
  #2

Не по теме:

Смотри в логе (DDMS) что пишет. Или вылаживай сюда ..

1
Опа!!
16 / 16 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 14:25  [ТС] #3
Вот файл проекта
0
Вложения
Тип файла: rar SimpleCalc.rar (45.6 Кб, 60 просмотров)
Опа!!
16 / 16 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 14:37  [ТС] #4
обработка операций висит только на плюсе
0
petruchodd
121 / 118 / 13
Регистрация: 23.06.2009
Сообщений: 637
09.08.2011, 15:22 #5
в case + : не может пропарсить "+" как integer
int buf1 = Integer.parseInt(cBuf.toString());. Насколько я понял ты хочешь строку типа " 2+2+3+4" перевести в результат ? тоесть калькулятор твой считает не так : 2 (ввел) + (нажал) ввел ещо 2 и это сразу показывает новый результат, а в твоем случае мы нажали 2... + и на вводе уже пусто. Значит предположение мое верно.. ввел 2... ничего не показывает, ввел ещо 2 ( при этом нажимаем +) и так несколько раз.. Потом нажав на равно мы получим суму всех тех цыфр что мы ввели ?.
ошибка вот
C++
1
08-09 11:17:25.852: ERROR/AndroidRuntime(942): Caused by: java.lang.NumberFormatException: unable to parse '+' as integer
"строка 96"

К сожелению в андроиде я такого не встречал, но друг подсказал что такой фигней он когда то страдал на javaScript. Там есть функция eval.. так что советую копать в этом направлении. Сейчас на работе.. периодически буду тоже просматривать, а то самому интересно.
1
Опа!!
16 / 16 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 15:46  [ТС] #6
Сперва вбиваем первое число, допустим 123, жмем на +, введенное число сохраняется в cBuf, textView очищается и ждет ввода следующего значения. По нажатию + запомнили что был нажат именно +. По нажатию равно свитч на переменную в которую положили +, ну а там уже складываются значения cBuf и текущее значение, введенное в textView, результат кладется в textView

Добавлено через 17 минут
Java
1
2
3
4
5
6
7
8
9
10
11
switch (curOperation)
        {
            case R.id.button13:
                // снизу закоменченный блок всех моих попыток
                int buf1 = Integer.parseInt(cBuf.toString());
                int buf2 = Integer.parseInt(tv.getText().toString());               
                int result = buf1 + buf2;
 
                tv.setText(Integer.toString(result));
                break;
...
вот свитч через интовое значение R.id.xxx, заходит в него точно, форс клоуз все равно имеется


Код
08-09 11:46:05.219: ERROR/AndroidRuntime(407): FATAL EXCEPTION: main
08-09 11:46:05.219: ERROR/AndroidRuntime(407): java.lang.IllegalStateException: Could not execute method of the activity
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$1.onClick(View.java:2144)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View.performClick(View.java:2485)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$PerformClick.run(View.java:9080)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Handler.handleCallback(Handler.java:587)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Looper.loop(Looper.java:123)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.app.ActivityThread.main(ActivityThread.java:3683)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invokeNative(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invoke(Method.java:507)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at dalvik.system.NativeStart.main(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407): Caused by: java.lang.reflect.InvocationTargetException
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invokeNative(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invoke(Method.java:507)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$1.onClick(View.java:2139)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     ... 11 more
08-09 11:46:05.219: ERROR/AndroidRuntime(407): Caused by: java.lang.NumberFormatException: unable to parse '' as integer
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.Integer.parseInt(Integer.java:362)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.Integer.parseInt(Integer.java:332)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at tgn.fraggjkee.android.SimpleCalc.SimpleCalcActivity.solveIt(SimpleCalcActivity.java:96)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     ... 14 more
1
petruchodd
121 / 118 / 13
Регистрация: 23.06.2009
Сообщений: 637
09.08.2011, 15:53 #7
ну в логе ты ж видишь, та же самая байда. Не может теперь пропарсить пустую строку (" ") Имхо парсом тут не получится.. может имеет смысл использовать отдельно буфер который будет подсчитывать это всё пошагово на фоне ?
1
Опа!!
16 / 16 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 18:20  [ТС] #8
Цитата Сообщение от petruchodd Посмотреть сообщение
ожет имеет смысл использовать отдельно буфер который будет подсчитывать это всё пошагово на фоне ?
суровый подход для такой простой операции для простого калькулятора надеюсь, найдется и более простой и очевидный метод!

Добавлено через 49 минут
все, разобрался, дело-то было не в преобразованиях, неправильное значение помещалось в cBuf, оттуда и ошибка в невозможности запарсить пустую переменную cBuf и что-то там из нее конвертировать

Добавлено через 1 час 32 минуты
petruchodd, забыл сказать огромное спасибо за помощь ;-)
1
petruchodd
10.08.2011, 15:39     textView как "экран" программы-калькулятора
  #9

Не по теме:

я как бы и ничем не помог ( , но если что обращайтесь))

0
10.08.2011, 15:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 15:39
Привет! Вот еще темы с ответами:

Как прикрутить "свой браузер" к странице - "фрагмент" - Программирование Android
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается прикрутить код браузера к странице fragments.выводиться должно на-...

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - "списки_жанров", "фильмы", "режиссеры" мне...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

TextInputLayout "открытие поля при старте программы" - Программирование Android
Ребят, всем привет! Вот решил немного изучить дизайн, и не могу понять в чем дело, когда использую TextInputLayout в своем view и стартую -...


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

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

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