Taschenrechner Algorhitmus

  • Antworten:5
Dani Sahne
  • Forum-Beiträge: 20

28.10.2012, 20:38:12 via Website

Hallo Leute,
ich wollte mir einen kleinen Taschenrechner programmieren, also man hat 1 - 0, *,/,+,-,.(nen Punkt) und ne Istgleich taste

Nur wie funktionert es dass ich dann die verschieden Zahlen mit verschieden operationen verketten kann
Ich hab mir das so vorgestellt ich hab einen String, meinentwegen "1+2+3+4", den konvertiere ich dann zu int, als ergebniss kommt 10 raus, das ganze schreibe ich dann in ein textview, "1+2+3+4" ersetze ich dann durch die benutzereingabe, nur funktioniert dass nicht so

1tvResult.setText(Integer.parseInt(operation));

Dass ist mein Code der den string operation(=1+2+3+4) in Int konvertiert und dann in ein Textview schreibt, nur wenn ich die App starte kommt "wurde leider beendet", aber eigentlich müsste die konvertierung doch möglich sein

Danke schonmla im vorraus

Antworten
Maximilian O
  • Forum-Beiträge: 990

28.10.2012, 21:11:30 via App

So kann das nicht funktionieren.
parseInt() gibt dir nur zu einem String die Int –value, falls vorhanden zurück. Du musst deinen String vorher aufsplitten und dann jeweils die Operationen durchführen

LG Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Ultratron Production
  • Forum-Beiträge: 66

28.10.2012, 21:15:38 via App

Dani Sahne
Hallo Leute,
ich wollte mir einen kleinen Taschenrechner programmieren, also man hat 1 - 0, *,/,+,-,.(nen Punkt) und ne Istgleich taste

Nur wie funktionert es dass ich dann die verschieden Zahlen mit verschieden operationen verketten kann
Ich hab mir das so vorgestellt ich hab einen String, meinentwegen "1+2+3+4", den konvertiere ich dann zu int, als ergebniss kommt 10 raus, das ganze schreibe ich dann in ein textview, "1+2+3+4" ersetze ich dann durch die benutzereingabe, nur funktioniert dass nicht so

1tvResult.setText(Integer.parseInt(operation));

Dass ist mein Code der den string operation(=1+2+3+4) in Int konvertiert und dann in ein Textview schreibt, nur wenn ich die App starte kommt "wurde leider beendet", aber eigentlich müsste die konvertierung doch möglich sein

Danke schonmla im vorraus

Such das doch mal bei YouTube :)

Antworten
Christian
  • Forum-Beiträge: 307

28.10.2012, 21:18:22 via Website

Hi Dani Sahne,


Dass ist mein Code der den string operation(=1+2+3+4) in Int konvertiert und dann in ein Textview schreibt, nur wenn ich die App starte kommt "wurde leider beendet", aber eigentlich müsste die konvertierung doch möglich sein.

1. die LogCat sagt dir in der Regel warum dein App nicht geht.
2. Also wenn du das "1+2+3+4" in int konvertieren möchtest geht das nicht. Integer.parseInt wandelt einen Zahl-String in eine Int-Wert um, "1+2+3" ist aber für den Computer keine Zahl.

Nur wie funktionert es dass ich dann die verschieden Zahlen mit verschieden Operationen verketten kann
du könntest vielleicht mit Regulären Ausdrücken arbeiten oder du merkst dir die Rechenzeichen und führst am ende die Rechnung dann aus

mfg Christian

Antworten
Dani Sahne
  • Forum-Beiträge: 20

29.10.2012, 01:55:57 via Website

Danke für eure Antworten,
habs jetzt anders gelöst, hier mal der gesame code
1package de.dani.devandwidgets;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.View;
6import android.widget.Button;
7import android.widget.TextView;
8
9public class MainActivity extends Activity implements View.OnClickListener
10{
11 //Declare Variables
12 Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, bDiv, bTim, bMin, bPlu, bEqu, bPt;
13 TextView tvResult;
14 int oldResult, newResult;
15 boolean flgDiv, flgTim, flgMin, flgPlu, flgEqu, flgPt;
16
17 //Called when Activity is first created
18 @Override public void onCreate(Bundle savedInstanceState)
19 {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_main);
22 initWidgets();
23 initOCLS();
24 }
25
26 private void initOCLS()
27 {
28 b1.setOnClickListener(this);
29 b2.setOnClickListener(this);
30 b3.setOnClickListener(this);
31 b4.setOnClickListener(this);
32 b5.setOnClickListener(this);
33 b6.setOnClickListener(this);
34 b7.setOnClickListener(this);
35 b8.setOnClickListener(this);
36 b9.setOnClickListener(this);
37 b0.setOnClickListener(this);
38 bDiv.setOnClickListener(this);
39 bTim.setOnClickListener(this);
40 bMin.setOnClickListener(this);
41 bPlu.setOnClickListener(this);
42 bEqu.setOnClickListener(this);
43 bPt.setOnClickListener(this);
44 }
45
46 //Initialize the Widgets
47 private void initWidgets()
48 {
49 b1 = (Button) findViewById(R.id.b1);
50 b2 = (Button) findViewById(R.id.b2);
51 b3 = (Button) findViewById(R.id.b3);
52 b4 = (Button) findViewById(R.id.b4);
53 b5 = (Button) findViewById(R.id.b5);
54 b6 = (Button) findViewById(R.id.b6);
55 b7 = (Button) findViewById(R.id.b7);
56 b8 = (Button) findViewById(R.id.b8);
57 b9 = (Button) findViewById(R.id.b9);
58 b0 = (Button) findViewById(R.id.b0);
59 bDiv = (Button) findViewById(R.id.bDiv);
60 bTim = (Button) findViewById(R.id.bTim);
61 bMin = (Button) findViewById(R.id.bMin);
62 bPlu = (Button) findViewById(R.id.bPlu);
63 bEqu = (Button) findViewById(R.id.bEqu);
64 bPt = (Button) findViewById(R.id.bPt);
65 tvResult = (TextView) findViewById(R.id.tvDisplay);
66 }
67
68 //Called when a Button is pressed
69 public void onClick(View v)
70 {
71 switch(v.getId())
72 {
73 case R.id.b1 :
74 {
75 if (flgDiv)
76 {
77 oldResult
78 }
79 else if (flgTim)
80 {
81
82 }
83
84 else if (flgMin)
85 {
86
87 }
88
89 else if (flgPlu)
90 {
91
92 }
93
94 else if (flgEqu)
95 {
96
97 }
98
99 else if (flgPt)
100 {
101
102 }
103
104 else
105 {
106 if(result != 0)
107 {
108 result = (result * 10) + 1;
109 }
110
111 else
112 {
113 result = 1;
114 }
115 }
116 break;
117 }
118
119 case R.id.b2 :
120 {
121 if(result != 0)
122 {
123 result = (result * 10) + 2;
124 }
125
126 else
127 {
128 result = 2;
129 }
130 break;
131 }
132
133 case R.id.b3 :
134 {
135 if(result != 0)
136 {
137 result = (result * 10) + 3;
138 }
139
140 else
141 {
142 result = 3;
143 }
144 break;
145 }
146
147 case R.id.b4 :
148 {
149 if(result != 0)
150 {
151 result = (result * 10) + 4;
152 }
153
154 else
155 {
156 result = 4;
157 }
158 break;
159 }
160
161 case R.id.b5 :
162 {
163 if(result != 0)
164 {
165 result = (result * 10) + 5;
166 }
167
168 else
169 {
170 result = 5;
171 }
172 break;
173 }
174
175 case R.id.b6 :
176 {
177 if(result != 0)
178 {
179 result = (result * 10) + 6;
180 }
181
182 else
183 {
184 result = 6;
185 }
186 break;
187 }
188
189 case R.id.b7 :
190 {
191 if(result != 0)
192 {
193 result = (result * 10) + 7;
194 }
195
196 else
197 {
198 result = 7;
199 }
200 break;
201 }
202
203 case R.id.b8 :
204 {
205 if(result != 0)
206 {
207 result = (result * 10) + 8;
208 }
209
210 else
211 {
212 result = 8;
213 }
214 break;
215 }
216
217 case R.id.b9 :
218 {
219 if(result != 0)
220 {
221 result = (result * 10) + 9;
222 }
223
224 else
225 {
226 result = 9;
227 }
228 break;
229 }
230
231 case R.id.b0 :
232 {
233 if(result != 0)
234 {
235 result = (result * 10) + 0;
236 }
237
238 else
239 {
240 result = 0;
241 }
242 break;
243 }
244 //Operations
245 case R.id.bDiv :
246 flgDiv = true;
247 break;
248
249 case R.id.bTim :
250 flgTim = true;
251 break;
252
253 case R.id.bMin :
254 flgMin = true;
255 break;
256
257 case R.id.bPlu :
258 flgPlu = true;
259 break;
260
261 case R.id.bEqu :
262 flgEqu = true;
263 break;
264
265 case R.id.bPt :
266 flgPt = true;
267 break;
268 }
269 tvResult.setText(String.valueOf(result));
270 }
271}

zahlen der Reihe nach eingeben geht schon, ich steck grad nur bei dem Problem fest wie ich dass mit dem +,-,*,/ mach, mal schaun wie ich das les

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

29.10.2012, 07:24:12 via App

:lol:
Programmieren ist cool, gell?
Viel Spaß beim knobeln.... :smug:

if all else fails, read the instructions.

Antworten