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

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

Войти
Регистрация
Восстановить пароль
 
Viktor_911
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 2
#1

Подскажите. Калькулятор Android - Программирование Android

21.09.2015, 13:35. Просмотров 363. Ответов 5
Метки нет (Все метки)

Ребята, помогите блдондинке, пожалуйста!
В изучении java android я еще новичок.
Выполняю лабораторную "калькулятор на андроид":
Написать приложение калькулятор, где аргументы и операции вводим при помощи кнопок.
Вот мой код:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
package com.example.calculat;
 
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
public class Main extends Activity implements OnClickListener {
    private Button button1;
    private Button button2;
    private Button button3;
    private Button button4;
    private Button button5;
    private Button button6;
    private Button button7;
    private Button button8;
    private Button button9;
    private Button button0;
    private Button buttonplus;
    private Button buttonmin;
    private Button buttonmultiply;
    private Button buttonpoint;
    private Button buttondel;
    private Button buttoneq;
    private Button buttondiv;
    private Button buttonC;
    
 
    String num1, num2;
    double result;
    int flag;
    boolean flagpoint;
    
    private TextView edittext;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        num1="";
        num2="";
        result=0;
        flag = 0;
        
        
        edittext = (TextView) findViewById(R.id.billEditText);
        
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        button4 = (Button) findViewById(R.id.button4);
        button5 = (Button) findViewById(R.id.button5);
        button6 = (Button) findViewById(R.id.button6);
        button7 = (Button) findViewById(R.id.button7);
        button8 = (Button) findViewById(R.id.button8);
        button9 = (Button) findViewById(R.id.button9);
        button0 = (Button) findViewById(R.id.button0);
        buttonplus = (Button) findViewById(R.id.buttonplus);
        buttonmin = (Button) findViewById(R.id.buttonmin);
        buttonmultiply = (Button) findViewById(R.id.buttonmultiply);
        buttonpoint = (Button) findViewById(R.id.buttonpoint);
        buttondel = (Button) findViewById(R.id.buttondel);
        buttoneq = (Button) findViewById(R.id.buttoneq);
        buttondiv = (Button) findViewById(R.id.buttondiv);
        buttonC = (Button) findViewById(R.id.buttonC);
        
 
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        button9.setOnClickListener(this);
        button0.setOnClickListener(this);
        buttonplus.setOnClickListener(this);
        buttonmin.setOnClickListener(this);
        buttonmultiply.setOnClickListener(this);
        buttonpoint.setOnClickListener(this);
        buttondel.setOnClickListener(this);
        buttoneq.setOnClickListener(this);
        buttondiv.setOnClickListener(this);
        buttonC.setOnClickListener(this);
 
 
    }
 
 
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
        case R.id.buttonpoint:
      
            if (!flagpoint && num1.indexOf(".")<0)
            {
                if(flag == 0)
                {
                    if(num1.length() !=0 && num1.indexOf(".")<0)
                    {
                        ClickNum(".");
                    }else {
                        ClickNum("0.");
                          }
        
                }else{
                    if(num2.length() !=0)
                    {
                        ClickNum(".");
                    }else {
                        ClickNum("0.");
                        }
                flagpoint = true;
                }
            }
            break;
        case R.id.button1: 
            ClickNum("1");
            break;
        case R.id.button2:
            ClickNum("2");
            break;
        case R.id.button3:
            ClickNum("3");
            break;
        case R.id.button4:
            ClickNum("4");
            break;
        case R.id.button5:
            ClickNum("5");
            break;
        case R.id.button6: 
            ClickNum("6");
            break;
        case R.id.button7: 
            ClickNum("7");
            break;
        case R.id.button8:
            ClickNum("8");
            break;
        case R.id.button9:
            ClickNum("9");
            break;
        case R.id.button0:
            ClickNum("0");
            break;
        case R.id.buttonplus:
        
            if (flag == 0){
                flag = 1;
                
            }else{
                result = Double.parseDouble(num1)+ Double.parseDouble(num2);
                ShowNum(Double.toString(result));
                clear();            
            }
                                    
            break;
        case R.id.buttonmin:
            if (flag == 0) flag = 2;
            break;
        case R.id.buttonmultiply:
            if (flag == 0) flag = 3;
            break;
        case R.id.buttondiv:
            if (flag == 0) flag = 4;
            break;
        case R.id.buttonC:
            clear();
            edittext.setText("0");
            break;
                        
        case R.id.buttoneq:
                if(num1 != null) calc();
                break;
        case R.id.buttondel:
               if(flag == 0){
                 if(num1.length() != 0){
                   if(num1.substring(num1.length()-1, num1.length()).equals(".")){
                       flagpoint = false;
                        num1 = num1.substring(0, num1.length()-1);
                        }
                    }
                     ShowNum(num1);
              }else{
                     if(num2.length() != 0){
                       if(num2.substring(num2.length()-1, num2.length()).equals(".")){
                           flagpoint = false;
                           num2 = num2.substring(0, num2.length()-1);
                       }
                     }
                     ShowNum(num2);
                  }
                 break;
        
            default:
                 Toast.makeText(this, R.string.no_operation, Toast.LENGTH_LONG).show();
            break;
 
        }
    }
 
 
    private void calc() {
        double a =0;
        double b =0;
        a = Double.parseDouble(num1);
        b = Double.parseDouble(num2);
        switch(flag){
 
        case 1:
            result = a + b;
            ShowNum(Double.toString(result));
            
            break;
        case 2:
            result = a - b;
            ShowNum(Double.toString(result));
            break;
        case 3:
            result = a * b;
            ShowNum(Double.toString(result));
            break;
        case 4:
            try
            {
            result = a / b;
            ShowNum(Double.toString(result));
            }
            catch (ArithmeticException e) {
                Toast.makeText(this, "Нельзя делить на ноль!", Toast.LENGTH_LONG).show();
            }
        }
        
    }
    private void clear() {
        num1="";
        num2="";
        flag = 0;
        flagpoint = false;
        
        
    }
    private void ClickNum(String num){
 
         if(flag == 0){
              num1=num1+num;
              ShowNum(num1);
         }else{
                num2=num2+num;
                ShowNum(num2);
                
         }
             }
 
    private void ShowNum (String num)
    {
         if(num.length() != 0)
         edittext.setText(num);
         
    }
  
   }
Не могу додуматься в следующем:
Допустим нажимаю 1 + 1 = 2. Хорошо. Продолжаю операцию нажимаю +, - вылетаю из приложения.
И следущее, дпустим 1 + 1 + выдает результат 2, + ввожу следующие аргументы 3, нажимаю + ничего не происходит. Операция выполняется только между двумя переменными. Что делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2015, 13:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите. Калькулятор Android (Программирование Android):

Калькулятор на Android - Программирование Android
Здравствуйте. Есть edit text, в котором все вычисления, затем Textview в котором ответ выводится, затем кнопки(+,-,sin,0-9) Во многих...

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

Android, простенький калькулятор - Программирование Android
Добрый день! Пишу на андроиде только 2 часа, по-этому ещё многое не понятно. В общем задача проста - написать простенький калькулятор....

Калькулятор на android перевод десятичного числа в восьмеричное и шестнадцатеричное - Программирование Android
Добрый вечер! Возможно у кого-то есть исходный код для создания подобного калькулятора. В сети не нашла как это сделать. Буду...

Подскажите среду разаработки для Android - Программирование Android
В Eclipse мне не нравиться дизайн окна, как для начала. Подскажите другие хорошие среды разработки под Android.

Подскажите нормальную литературу по программированию для Android - Программирование Android
Всем привет. Для андроид не писал никогда - тут понадобилось. Подскажите нормальную литературу, где все ясно описано с чего начинать, с...

5
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
21.09.2015, 14:26 #2
ПРивет
0
androbro
21.09.2015, 15:33
  #3

Не по теме:

Цитата Сообщение от Viktor_911 Посмотреть сообщение
Ребята, помогите блдондинке, пожалуйста!
Витек! что за балет?

0
Viktor_911
0 / 0 / 0
Регистрация: 29.01.2015
Сообщений: 2
21.09.2015, 15:36  [ТС] #4
Ok
Вот main.xml

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="#000"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.ui.example.calc.Calc" >
 
<TableLayout
    android:background="#d2cde3"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tablelayout"
    android:padding="10dp"
    android:layout_margin="2dip"
    >
<TableRow 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:id= "@+id/ tablerow" >
    
    <TextView
        android:id="@+id/ billEditText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#FFF"
        android:textSize="50sp" />
   
</TableRow>
 
<TableRow 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:id= "@+id/ tablerow1" >
    <Button 
        android:id="@+id/buttonC"
        android:layout_width="fill_parent"
        android:text="@string/buttonC"
        android:onClick="OnClick"/>
    <Button 
        android:id="@+id/buttondiv"
        android:layout_width="fill_parent"
        android:text="@string/buttondiv"
       android:onClick="OnClick"/>
   <Button 
       android:id="@+id/buttonmultiply"
        android:layout_width="fill_parent"
        android:text="@string/buttonmultiply"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/buttondel"
        android:layout_width="fill_parent"
        android:text="@string/buttondel"
        android:onClick="OnClick"/> 
    </TableRow>
 <TableRow 
    android:layout_height= "fill_parent"
    android:layout_width="fill_parent"
    android:id= "@+id/ tablerow2" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:onClick="OnClick"
       android:text="@string/button1" />
 
    <Button 
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:text="@string/button2"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:text="@string/button3"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/buttonplus"
        android:layout_width="wrap_content"
        android:text="@string/buttonplus"
        android:onClick="OnClick"/> 
    </TableRow>
 <TableRow 
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id= "@+id/ tablerow3" >
    <Button
        android:id="@+id/button4" 
        android:layout_width="wrap_content"
        android:text="@string/button4"
        android:onClick="OnClick"/>
    <Button 
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:text="@string/button5"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:text="@string/button6"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/buttonmin"
        android:layout_width="wrap_content"
        android:text="@string/buttonmin"
        android:onClick="OnClick"/> 
    </TableRow>
     <TableRow 
    android:layout_height= "match_parent"
    android:layout_width="match_parent"
    android:id= "@+id/ tablerow4" >
    <Button 
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:text="@string/button7"
        android:onClick="OnClick"/>
    <Button 
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:text="@string/button8"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:text="@string/button9"
        android:onClick="OnClick"/>
   <Button 
       android:id="@+id/buttoneq"
        android:layout_width="wrap_content"
        android:text="@string/buttoneq"
        android:onClick="OnClick"/> 
    </TableRow>
    
     
     <TableRow 
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id= "@+id/ tablerow5" >
    <Button 
        android:layout_width="wrap_content"
        android:text="@string/button0"
        android:id="@+id/button0"
        android:layout_span="2"
        android:onClick="OnClick"/>
 
    <Button
        android:id="@+id/buttonpoint"
        android:layout_width="wrap_content"
        android:layout_span="2"
        android:onClick="OnClick"
        android:text="@string/buttonpoint" />
    
  </TableRow>
 
</TableLayout>
 
</RelativeLayout>
А это log

09-21 15:26:45.424: E/(6843): appName=com.example.calculat, acAppName=/system/bin/surfaceflinger
09-21 15:26:45.424: E/(6843): 0
09-21 15:27:01.430: E/AndroidRuntime(6843): FATAL EXCEPTION: main
09-21 15:27:01.430: E/AndroidRuntime(6843): Process: com.example.calculat, PID: 6843
09-21 15:27:01.430: E/AndroidRuntime(6843): java.lang.NumberFormatException: Invalid double: ""
09-21 15:27:01.430: E/AndroidRuntime(6843): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
09-21 15:27:01.430: E/AndroidRuntime(6843): at java.lang.StringToReal.parseDouble(StringToReal.java:248)
09-21 15:27:01.430: E/AndroidRuntime(6843): at java.lang.Double.parseDouble(Double.java:295)
09-21 15:27:01.430: E/AndroidRuntime(6843): at com.example.calculat.Main.calc(Main.java:216)
09-21 15:27:01.430: E/AndroidRuntime(6843): at com.example.calculat.Main.onClick(Main.java:182)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.view.View.performClick(View.java:4463)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.view.View$PerformClick.run(View.java:18770)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.os.Handler.handleCallback(Handler.java:808)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.os.Handler.dispatchMessage(Handler.java:103)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.os.Looper.loop(Looper.java:193)
09-21 15:27:01.430: E/AndroidRuntime(6843): at android.app.ActivityThread.main(ActivityThread.java:5292)
09-21 15:27:01.430: E/AndroidRuntime(6843): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 15:27:01.430: E/AndroidRuntime(6843): at java.lang.reflect.Method.invoke(Method.java:515)
09-21 15:27:01.430: E/AndroidRuntime(6843): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
09-21 15:27:01.430: E/AndroidRuntime(6843): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
09-21 15:27:01.430: E/AndroidRuntime(6843): at dalvik.system.NativeStart.main(Native Method)
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
21.09.2015, 15:43 #5
похоже вы "" в double пытаетесь превратить
0
Vladimir93
41 / 41 / 5
Регистрация: 28.06.2015
Сообщений: 172
24.09.2015, 13:11 #6
Что то с методом clear(); вероятно намудрили. Взываете и после пытаетесь считать.
P.S. Все что парсим нужно оборачивать в try сatch. Все. А ошибки выводить на консоль.
0
24.09.2015, 13:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2015, 13:11
Привет! Вот еще темы с ответами:

Подскажите что почитать по динамической 2D Графике в Android - Программирование Android
Есть потребность сделать небольшую anadroid игру на подобии крестиков-ноликов. Т.е. нужно разграфить поле, и иметь возможность изменять...

Подскажите как работать с шапкой приложения. android studio - Программирование Android
Подскажите как работать с верхней шапкой(колонтикулом) приложения, (где название) использую форму(шаблон) ЕмптиАктивити. добавить там что...

Подскажите эмулятор Android для Windows с поддержкой Marketa - Программирование Android
или как заставить маркет работать (устанавливать приложения из него) в AVD?

Подскажите книгу или видеоуроки для изучения программирования под Android - Программирование Android
Просмотрел многие варианты похожих вопросов, многие из них были заданы в 2013, ответы на которых были книги, выпущенные еще раньше....


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

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

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