Wie kann man mit Dezimalzahlen rechnen?

  • 7 Antworten
  • Letztes Antwortdatum
M

MatthiasKramer

Ambitioniertes Mitglied
3
Hallo,
ich möchte in meinen Rechner die Funktion einbauen, dass man komma bzw. punkte setzen kann. (Für Dezimalzahlen:D)
z.B. drücke ich auf folgende Buttons: "5.1 + 4.9"
Wenn das dann so im Aufgaben-TextView stehen hat und auf den Button "=" klickt schließt die App.. Habe dann mal die Punkte durch ein Komma ersetzt, was aber nichts gebracht hat..
Ich gebe hier mal mein Code und die LogCat frei:

Code:
Code:
[SIZE=2]
[LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] onClickbtnpunkt (View view) {
TextView tva = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]TextView01[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[SIZE=2]// tva steht für das Aufgaben-TextView, also das Textview, wo [/SIZE]
[SIZE=2]// die Aufgabe drin steht

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (tva.getText().toString().length() == 0) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}
// Verhindert, dass man z.B. ".51 +34" eingeben kann
String text = tva.getText().toString();
tva.setText(text + [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]","[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[SIZE=2]// Setzt den bisherigen eingegebenen Text (text) und dahinter das Komma
[/LEFT]
}
[/SIZE]

LogCat:
Code:
09-27 12:30:37.580: E/AndroidRuntime(633): FATAL EXCEPTION: main
09-27 12:30:37.580: E/AndroidRuntime(633): java.lang.IllegalStateException: Could not execute method of the activity
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.view.View$1.onClick(View.java:2072)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.view.View.performClick(View.java:2408)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.view.View$PerformClick.run(View.java:8816)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.os.Handler.handleCallback(Handler.java:587)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.os.Looper.loop(Looper.java:123)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.reflect.Method.invokeNative(Native Method)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.reflect.Method.invoke(Method.java:521)
09-27 12:30:37.580: E/AndroidRuntime(633):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-27 12:30:37.580: E/AndroidRuntime(633):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-27 12:30:37.580: E/AndroidRuntime(633):  at dalvik.system.NativeStart.main(Native Method)
09-27 12:30:37.580: E/AndroidRuntime(633): Caused by: java.lang.reflect.InvocationTargetException
09-27 12:30:37.580: E/AndroidRuntime(633):  at de.meinprojekt.rechner.RechnerActivity.onClickGleich(RechnerActivity.java:276)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.reflect.Method.invokeNative(Native Method)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.reflect.Method.invoke(Method.java:521)
09-27 12:30:37.580: E/AndroidRuntime(633):  at android.view.View$1.onClick(View.java:2067)
09-27 12:30:37.580: E/AndroidRuntime(633):  ... 11 more
09-27 12:30:37.580: E/AndroidRuntime(633): Caused by: java.lang.NumberFormatException: unable to parse '5,9' as integer
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.Integer.parse(Integer.java:433)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.Integer.parseInt(Integer.java:422)
09-27 12:30:37.580: E/AndroidRuntime(633):  at java.lang.Integer.parseInt(Integer.java:382)
09-27 12:30:37.580: E/AndroidRuntime(633):  ... 15 more
09-27 12:30:42.929: I/Process(633): Sending signal. PID: 633 SIG: 9

Hoffe, mir kann jemand helfen:o
Liebe Grüße:)
 
Hi, kann es sein dass du die "Zahleneingaben" in int's speicherst und dann damit rechnest (Oder bzw. in Integer umcastest)? Denn du musst für Dezimalzahlen/Kommazahlen double benutzen und int für Ganzezahlen. Außerdem deine Anfangs-Idee war korrekter also dass der String einen Punkt bekommen soll und kein komma, denn mit ein Punkt kann der double dann rechnen.

mfg
 
  • Danke
Reaktionen: MatthiasKramer
java.lang.NumberFormatException: unable to parse '5,9' as integer

Schonmal mit Datentypen auseinander gesetzt?

Gruß

€dit: Zu Spät, Kolleen war schneller :)
 
Danke Kollen, ich probiers gleich mal aus.
Mache ein Edit ob es geklappt hat oder nicht.

Mfg

Der ursprüngliche Beitrag von 15:01 Uhr wurde um 15:13 Uhr ergänzt:

So, hat alles geklappt :)
Danke!:>

@Iceclaw: Ich weiss, dass in Integers nur Zahlen können, habe aber mal in einem YT-Tutorial gesehen/gehört, dass Dezimalpunkte damit eingeschlossen sind. Dachte in sofern, dass das mit nem Integer klappen müsste..
 
Hi,

vielleicht sollte man von YouTube-Tuts auf d.android.com umsteigen?!
Achne, bevor du dahin gehst solltest du von Galileo "Java ist auch eine Insel" lesen.

Aber ich bin nicht dein Papa :)

Gruß
 
Hi,
vielleicht solltest du ein bisschen sachlicher bleiben?
Denk dran, dass du sicherlich auch mal klein angefangen bist.
Ach ne, so wie du Töne spuckst wusstest du eh gleich alles von Anfang an! :)

P.S: Ich bin auch nicht dein Sohn, Zufälle gibt es! :scared:

Mit den aller besten Grüßen,
Matthias! :tongue:
 
ich weiß du wirst mich für den post hassen^^ aber int ist ein Ganzzahl Datentyp, dezimalzahlen müssen in einen Gleitkommazahlen Datentyp (float 32 bit, double 64 bit). Von daher kann das yt video nicht stimmen ...
 
@Mad Ja, habe ich jetzt mitlerweile auch gemerkt.. Integer = Ganzzahlen, Double = Dezimalzahlen :) Aber naja, wenn man sowas in einem yt video hört, glaubt man das ja auch logischer weise gleich:D Aber trotzdem danke für deine Antwort! :)

Mfg
 
Zurück
Oben Unten