Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Mrsuper
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 22
#1

Калькулятор по формуле - Программирование Android

29.07.2015, 16:42. Просмотров 1091. Ответов 28
Метки нет (Все метки)

При вводе простых чисел, все прекрасно считает, но при вводе десятичных пишет всегда 0.0. Что посоветуете?
З.Ы. как лучше сделать чтобы был выпадающий список с выбором.
Вот код
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
package com.example.andreybib.myapplication;
 
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
 
public class MainActivity extends ActionBarActivity {
 
    double a, b, c, d,e,f,g;
    EditText Text1, Text2, Text3;
    TextView Text;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setlocale(0, "");
 
        Text = (TextView) findViewById(R.id.text);
        Text1 = (EditText) findViewById(R.id.EditText01);
        Text2 = (EditText) findViewById(R.id.EditText02);
        Text3 = (EditText) findViewById(R.id.EditText03);
 
        final Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
 
                try {
                    a = Integer.parseInt(Text1.getText().toString());
                    b = Integer.parseInt(Text2.getText().toString());
                    c = Integer.parseInt(Text3.getText().toString());
 
                } catch (NumberFormatException e) {
                    a = 0;
                    b = 0;
                    c = 0;
                }
                e=0.001*a;
                f=0.001*b;
                g=3.14*c;
 
                d = e*f*g * 7650;
                Text.setText("kg = "+d);
            }
 
 
        });
 
    }
 
    private void setlocale(int i, String s) {
    }
}
XML
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 
    <EditText
        android:id="@+id/EditText01"
        android:layout_width="fill_parent"
        android:hint="Введите диаметр в мм"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:maxLength="10" />
 
    <EditText
        android:id="@+id/EditText02"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:hint="Введите стенку в мм "
        android:maxLength="10"
        android:layout_marginTop="15dp"
        android:layout_below="@+id/EditText01"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
 
    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="="
        android:textSize="30sp"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
 
    <TextView
        android:id="@+id/text"
        android:layout_width="300dp"
        android:layout_height="40dp"
        android:text=""
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp" />
 
    <EditText
        android:id="@+id/EditText03"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Введите длину в м"
        android:inputType="numberDecimal"
        android:maxLength="10"
        android:layout_marginTop="15dp"
        android:layout_below="@+id/EditText02"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"  />
 
 
</RelativeLayout>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 16:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Калькулятор по формуле (Программирование Android):

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

По какой формуле нужно вычислять? по Бернулли или по формуле интеграла Лагранжа?
Всхожесть семян некоторого растения составляет 70% .Какова вероятность того,...

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include &lt;iostream&gt; int main(){ int a = 0; int b = 0; char...

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

Калькулятор
Здраствуйте! У меня к вам такой вопрос нужно чтобы при классе Sin считывался...

Калькулятор на JS
Я сама новичок и мне дали задание написать строчный калькулятор который будет...

28
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
29.07.2015, 17:28 #2
Для начала начни называть переменные с маленьких букв - text, text1...
А если по делу, то парси не Integer, а Double
1
Mrsuper
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 22
29.07.2015, 17:35  [ТС] #3
Спасибо, а можешь подсказать как сделать так, чтобы текст в конце на русском писался?
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
29.07.2015, 17:39 #4
Цитата Сообщение от Mrsuper Посмотреть сообщение
При вводе простых чисел, все прекрасно считает, но при вводе десятичных пишет всегда 0.0. Что посоветуете?
А простые числа в какой системе вводятся?
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
29.07.2015, 17:57 #5
Цитата Сообщение от Mrsuper Посмотреть сообщение
а можешь подсказать как сделать так, чтобы текст в конце на русском писался?
не уж то Вы про это:
Java
1
 Text.setText("kg = "+d);
если да, то как бы Вас не шокировать))
Java
1
 Text.setText("кг = "+d);
0
Mrsuper
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 22
30.07.2015, 09:44  [ТС] #6
Цитата Сообщение от androbro Посмотреть сообщение
не уж то Вы про это:
Java
1
 Text.setText("kg = "+d);
если да, то как бы Вас не шокировать))
Java
1
 Text.setText("кг = "+d);
Только в данном случае кг будет писаться странными символами типа: вопросы в ромбе
0
Pablito
2652 / 2134 / 726
Регистрация: 12.05.2014
Сообщений: 7,450
Завершенные тесты: 1
30.07.2015, 09:52 #7
Цитата Сообщение от Mrsuper Посмотреть сообщение
Только в данном случае кг будет писаться странными символами типа: вопросы в ромбе
открыть файл с этим классом и посмотреть в нижний правый угол IDE - там наверняка будет кодировка, не UTF-8
если да, то надо выставить UTF-8
1
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
30.07.2015, 12:03 #8
Так с какой же системой калькулятор работал то?

Добавлено через 1 час 51 минуту
Цитата Сообщение от Mikalai Посмотреть сообщение
Для начала начни называть переменные с маленьких букв - text, text1...
А если по делу, то парси не Integer, а Double
Как это поможет десятичной системе? ТС не хочет называть систему, но предположим восьмеричная. Вводим 15 восьмеричное, всё эйси. Потом 14 десятичное вводим не как 16 восьмеричное, а как 14 десятичное, получается 0.0. Каким образом проблема решится с помощью double?
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
30.07.2015, 13:17 #9
taras atavin, интересные мысли. Но!!!...
Не стоит искать черную кошку в темной комнате ночью. Особенно, если ее там нет. (с)Конфуций
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
30.07.2015, 13:32 #10
Не понял.
0
Bend3r
149 / 136 / 35
Регистрация: 29.07.2012
Сообщений: 709
30.07.2015, 21:50 #11
Цитата Сообщение от Mrsuper Посмотреть сообщение
Java
1
2
3
a = Integer.parseInt(Text1.getText().toString());
b = Integer.parseInt(Text2.getText().toString());
c = Integer.parseInt(Text3.getText().toString());
Замените на:
Java
1
2
3
a = Double.parseInt(Text1.getText().toString());
b = Double.parseInt(Text2.getText().toString());
c = Double.parseInt(Text3.getText().toString());
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
31.07.2015, 07:20 #12
Bend3r, как это поможет поддерживать десятичную систему счисления?
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
31.07.2015, 09:05 #13
Цитата Сообщение от Mrsuper Посмотреть сообщение
При вводе простых чисел, все прекрасно считает, но при вводе десятичных пишет всегда 0.0.
все правильно, так как при попытке спарсить
Java
1
a = Integer.parseInt(Text1.getText().toString());
выкидывается NumberFormatException, Вы его ловите catchэм где все переменные обнуляются.
А как известно любое число умноженное на 0 дает 0( в нашем случае 0.0 т.к. double)
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
31.07.2015, 11:31 #14
Почему? Функция parseInt не знает, что ты только простые числа вводишь в какой то другой системе, а составные в десятичной. И если ввести 15, она не поймёт, когда это 15 восьмеричное = 13 десятичное, а когда это 15 десятичное. И при вводе 25 она не поймёт, когда это 25 шестнадцатеричное = 37 десятичное, а когда это 25 десятичное. При вводе 111 она не поймёт, когда это 111 двоичное = 7 десятичное, а когда это 111 десятичное.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
31.07.2015, 11:38 #15
taras atavin, имхо, а при чем тут системы счисления? ТСу лишь бы в десятичной заработало да и ладно))
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
31.07.2015, 11:40 #16
А что у него десятичное? Система координат? Не смешно. Операционная система? Тоже.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
31.07.2015, 11:57 #17
Цитата Сообщение от taras atavin Посмотреть сообщение
А что у него десятичное?
вангую что ТС имел ввиду числа с дробной частью
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
31.07.2015, 13:41 #18
Цитата Сообщение от androbro Посмотреть сообщение
вангую что ТС имел ввиду числа с дробной частью
Простыми не являются не только дроби, а десятичными могут быть даже простые.
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
31.07.2015, 13:57 #19
Цитата Сообщение от taras atavin Посмотреть сообщение
Простыми не являются не только дроби, а десятичными могут быть даже простые.
ну Вы прям поражаете своими математическими познаниями
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
31.07.2015, 15:08 #20
Для программиста не знать, что такое простое, составное и десятичное число - всё равно, что разработчику специальной теории относительности не знать, что оказывается есть свет и силы и думать, что глаза чем то ощупывают предметы, а те движутся, как им хочется. Он уже за программирование взялся и должен знать, как называются числа.
0
31.07.2015, 15:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 15:08
Привет! Вот еще темы с решениями:

Калькулятор
Возможно ли сделать так, чтобы при запуске в edit сразу был 0 ?unit Unit1; ...

Калькулятор
Добрый вечер. Помогите найти ошибку. Написал программу калькулятор, но при...

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

Калькулятор
Сделал простой калькулятор, часть взял с левого исходника, и конечно он...


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

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

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