TextView scannen

  • 6 Antworten
  • Letztes Antwortdatum
M

MatthiasKramer

Ambitioniertes Mitglied
3
Hallo,
ich habe vor ein TextView nach +, -, * und / zu scannen.
Wenn er z.B. ein + findet, soll der Inhalt des TextViews (z.B. " 1+2 ")
gesplitet werden zu "1" und "2" und dann zusammengerechnet werden.
Den Spliter hätte ich soweit fertig:

Code:
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] onClickGleich (View view) {[/SIZE][/LEFT]
 
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Ergebnis;[/SIZE][/LEFT]
 
 
 
[LEFT][SIZE=2]TextView tva = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]TextView01[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]);[/SIZE]
[SIZE=2]TextView tve = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]Ergebnis[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]); [/SIZE][/LEFT]
 
 
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (tva.getText().toString() == [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]""[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) {[/SIZE]
[SIZE=2]tva.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Geben Sie eine Aufgabe ein."[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]""[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2];}[/SIZE][/LEFT]
 
 
 
 
[LEFT][SIZE=2]String aufgabe = tva.getText().toString();[/SIZE]
[SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[+-*/]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2]String [] tokens = aufgabe.split(delims);[/SIZE]
[SIZE=2]String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][/LEFT]

[/COLOR][/SIZE][SIZE=2]String tokens1 = tokens[1]; 
[/SIZE][LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#3f7f5f]
[/COLOR][/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);[/SIZE][/LEFT]
 
 
[LEFT][SIZE=2]Ergebnis = zahl1 + zahl2;[/SIZE]
[SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);[/SIZE][/LEFT]
 
 
 
[SIZE=2]}[/SIZE]

Also, wenn der Scanner ein "+" findet, soll
Code:
Ergebnis = zahl1 + zahl2
sein, wenn der Scanner ein "-" findet, soll
Code:
Ergebnis = zahl1 - zahl2
sein. Das gleiche auch bei "*" und "/".
Also müsste das doch in etwa so aussehen:
Code:
Blablabla
new Scanner // Weiss nicht, wie man einen neuen Scanner erstellt
...
...
if Der scanner ein "+" im TextView /*Namens "tva"*/ gefunden hat {
Ergebnis = zahl1 + zahl2
}

So in etwa müsste das doch aufgebaut sein, oder?! (Mir ist klar, dass das nicht der code sein kann, es ging mir jetzt nur darum mein Problem zu erläutern)
Mein Problem: Ich weiß nicht wie ich den Scanner erstellen soll und ihn dann so einstelle, dass er das TextView "tva" nach "+, -, *, /" durchsucht.
Dazu schaffe es nicht dann eine passende if-Abfrage dazu zu schreiben.

Ich hoffe ihr versteht, was ich meine!
Liebe grüße.
[/LEFT]
 
Ein ähnliches Tutorial gibt es auf Youtube von iBasicTutorials
(In deutsch)

Gesendet von meinem GT-I9300
 
Naja, ich habe seine Videos mal gesehen, kann mich nicht entsinnen, dass er sowas behandelt hat. Aber egal, das mit dem Scanner habe ich jetzt eig. rausgefunden wie es geht.. Ich bin mir auch eig. ziemlich sicher, dass der Code soweit richtig ist.. Trotzdem bekomme ich ein Error wenn ich minus, mal oder geteilt rechne (Plus klappt!)
hier ist der Code:

Code:
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]public[/COLOR][/SIZE][/COLOR][/SIZE][/B][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] onClickGleich (View view) {[/SIZE][/LEFT]
 
 
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Ergebnis;[/SIZE][/LEFT]
 
 
 
[LEFT][SIZE=2]TextView tva = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]TextView01[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]);[/SIZE]
[SIZE=2]TextView tve = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]Ergebnis[/COLOR][/SIZE][/COLOR][/SIZE][/I][SIZE=2]); [/SIZE][/LEFT]
 
 
[LEFT][SIZE=2]String aufgabe = tva.getText().toString();[/SIZE][/LEFT]
 
 
[LEFT][SIZE=2]Scanner scanner = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Scanner(aufgabe);[/SIZE]
[SIZE=2]scanner.findInLine([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[+]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (scanner.hasNext()) { [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//[U]Wenn[/U] [U]der[/U] Scanner [U]ein[/U] "Plus" [U]gefunden[/U] hat:[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
 
[LEFT][SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[+]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2]String [] tokens = aufgabe.split(delims);[/SIZE]
[SIZE=2]String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
[SIZE=2]String tokens1 = tokens[1]; [/SIZE]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
 

[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);[/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]Ergebnis = zahl1 + zahl2;[/SIZE]
[LEFT][SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);[/SIZE]
[SIZE=2]} [/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] {[/SIZE]
[SIZE=2]Scanner scannerminus = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Scanner(aufgabe);[/SIZE]
[SIZE=2]scannerminus.findInLine([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[-]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (scannerminus.hasNext()) { [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//[U]der[/U] Scanner hat [U]ein[/U] "Minus" [U]gefunden:[/U][/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[-]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[LEFT][SIZE=2]String [] tokens = aufgabe.split(delims);[/SIZE]
[SIZE=2]String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2]String tokens1 = tokens[1]; [/SIZE][/LEFT]
[/LEFT]

 
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
 

[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);[/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]Ergebnis = zahl1 - zahl2;[/SIZE]
[LEFT][SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);[/SIZE][/LEFT]
[/LEFT]

 

[LEFT][SIZE=2]}[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] { [/SIZE]
[SIZE=2]Scanner scannermal = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Scanner(aufgabe);[/SIZE]
[SIZE=2]scannermal.findInLine([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"
[*]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (scannermal.hasNext()) { [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//[U]der[/U] Scanner hat [U]ein[/U] "[U]Mal[/U]" [U]gefunden[/U]:[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"
[*]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[LEFT][SIZE=2]String [] tokens = aufgabe.split(delims);[/SIZE]
[SIZE=2]String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2]String tokens1 = tokens[1]; [/SIZE][/LEFT]
[/LEFT]

 
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
 

[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);[/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]Ergebnis = zahl1 * zahl2;[/SIZE]
[LEFT][SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);[/SIZE]
[SIZE=2]}[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] {[/SIZE]
[SIZE=2]Scanner scannergeteilt = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Scanner(aufgabe);[/SIZE]
[SIZE=2]scannergeteilt.findInLine([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[/]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (scannergeteilt.hasNext()) { [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//[U]der[/U] Scanner hat [U]ein[/U] "[U]Geteilt[/U]" [U]gefunden[/U]:[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[/LEFT]

 

[LEFT][SIZE=2]String delims = [/SIZE][/LEFT]

 
[LEFT][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[/]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]

[SIZE=2]String [] tokens = aufgabe.split(delims);[/SIZE]
[LEFT][SIZE=2]String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2]String tokens1 = tokens[1]; [/SIZE][/LEFT]
[/LEFT]

 
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
 
 

[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);[/SIZE][/LEFT]
[/LEFT]

 
 

[LEFT][SIZE=2]Ergebnis = zahl1 / zahl2;[/SIZE]
[LEFT][SIZE=2]tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);[/SIZE]
[SIZE=2]}[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] {[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2];[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2]}[/SIZE][/LEFT]


[SIZE=2]}[/SIZE][/LEFT]

(Mal eine kleine Erklärung des Codes: Nachdem man auf das "gleich"-Zeichen im Taschenrechner gedrückt hat scannt der "scanner" ob im TextView "tva" (Dort steht die Aufgabe drin, z.B. 9+1) ein Plus steht, wenn ja, dann splitet die App die Aufgabe beim Plus-Zeichen und addiert zahl1 und zahl2, wenn kein Plus da ist, dann scannt ein anderer Scanner (scannerminus) nach einem Minus in dem TextView "tva". Wenn er ein Minus gefunden hat, splitet er die Aufgabe beim Minus und subtrahiert die Aufgabe. Wenn kein Minus in der Aufgabe ist, geht es genau so weiter mit Mal und Geteilt.)

Naja, wie schon geschrieben, wenn ich Plus rechne, dann klappt das. Alles andere klappt nicht.​

Ich packe mal den LogCat dazu, falls das hilft.​

Code:
09-25 12:28:04.490: E/AndroidRuntime(964): FATAL EXCEPTION: main
Code:
[LEFT]09-25 12:28:04.490: E/AndroidRuntime(964): java.lang.IllegalStateException: Could not execute method of the activity
[LEFT]09-25 12:28:04.490: E/AndroidRuntime(964):  at android.view.View$1.onClick(View.java:2072)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.view.View.performClick(View.java:2408)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.view.View$PerformClick.run(View.java:8816)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.os.Handler.handleCallback(Handler.java:587)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.os.Looper.loop(Looper.java:123)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-25 12:28:04.490: E/AndroidRuntime(964):  at java.lang.reflect.Method.invokeNative(Native Method)
09-25 12:28:04.490: E/AndroidRuntime(964):  at java.lang.reflect.Method.invoke(Method.java:521)
09-25 12:28:04.490: E/AndroidRuntime(964):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-25 12:28:04.490: E/AndroidRuntime(964):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-25 12:28:04.490: E/AndroidRuntime(964):  at dalvik.system.NativeStart.main(Native Method)
09-25 12:28:04.490: E/AndroidRuntime(964): Caused by: java.lang.reflect.InvocationTargetException
09-25 12:28:04.490: E/AndroidRuntime(964):  at de.meinprojekt.rechner.RechnerActivity.onClickGleich(RechnerActivity.java:137)
09-25 12:28:04.490: E/AndroidRuntime(964):  at java.lang.reflect.Method.invokeNative(Native Method)
09-25 12:28:04.490: E/AndroidRuntime(964):  at java.lang.reflect.Method.invoke(Method.java:521)
09-25 12:28:04.490: E/AndroidRuntime(964):  at android.view.View$1.onClick(View.java:2067)
09-25 12:28:04.490: E/AndroidRuntime(964):  ... 11 more
09-25 12:28:04.490: E/AndroidRuntime(964): Caused by: java.lang.ArrayIndexOutOfBoundsException
09-25 12:28:04.490: E/AndroidRuntime(964):  ... 15 more
09-25 12:28:04.928: D/dalvikvm(964): GC_FOR_MALLOC freed 5448 objects / 319296 bytes in 389ms
09-25 12:28:09.406: I/Process(964): Sending signal. PID: 964 SIG: 9[/LEFT]

Ich bedanke mich schonmal für Hilfe! :)

[/LEFT]
 
Hi, was steht denn in der Zeile 137 ?
09-25 12:28:04.490: E/AndroidRuntime(964): at de.meinprojekt.rechner.RechnerActivity.onClickGleich(RechnerActivity.java:137)

mfg
 
  • Danke
Reaktionen: MatthiasKramer
Kollen schrieb:
Hi, was steht denn in der Zeile 137 ?


mfg

Code:
[SIZE=2]
String tokens1 = tokens[1]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2
[/COLOR][/SIZE][/COLOR][/SIZE]

mfg
 
Hi, split erwartet eine expression hast du sowas versucht?

Code:
String delims = "\\+";

mfg
 
  • Danke
Reaktionen: MatthiasKramer
Habe ich grade probiert. Erscheint ebenfalls ein "The application Rechner (process de.meinprojekt.rechner) has stopped unexpectedly. Please try again."
Dieses mal gab es nichtmal ein LogCat-Eintrag dazu :confused:

Mfg

Edit: Also ich habe folgende Zeilen verändert:
Code:
String delims = "[+]+";
String delims = "[-]+";
String delims = "
[*]+";
String delims = "[/]+";
Die Zeilen sehen jetzt so aus:
Code:
[SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"\\+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2][SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"\\-"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2]String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"\\*"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2][SIZE=2]String delims = "[/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]\\/"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[/SIZE][/SIZE]


Der ursprüngliche Beitrag von 15:33 Uhr wurde um 16:42 Uhr ergänzt:

Dank "Kollen" konnte das Problem gelöst werden! :)
Für den Fall, dass jemand das gleiche oder ein ähnliches Problem hatte, gebe ich einfach mal den Code hier frei:
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] onClickGleich (View view) {

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Ergebnis;


TextView tva = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]TextView01[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
TextView tve = (TextView) findViewById (R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]Ergebnis[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); 

String aufgabe = tva.getText().toString();

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (aufgabe.contains([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) {
String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[+]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
String [] tokens = aufgabe.split(delims);
String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]String tokens1 = tokens[1]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);

Ergebnis = zahl1 + zahl2;
tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (aufgabe.contains([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"-"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) {
String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[-]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
String [] tokens = aufgabe.split(delims);
String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]String tokens1 = tokens[1]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);

Ergebnis = zahl1 - zahl2;
tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (aufgabe.contains([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"*"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) {
String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"
[*]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
String [] tokens = aufgabe.split(delims);
String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]String tokens1 = tokens[1]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);

Ergebnis = zahl1 * zahl2;
tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (aufgabe.contains([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"/"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) {
String delims = [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"[/]+"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
String [] tokens = aufgabe.split(delims);
String tokens0 = tokens[0]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl1[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]String tokens1 = tokens[1]; [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]//zahl2[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl1 = Integer.[I]parseInt[/I](tokens0);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] zahl2 = Integer.[I]parseInt[/I](tokens1);

Ergebnis = zahl1 / zahl2;
tve.setText([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"Ergebnis = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + Ergebnis);}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]else[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
}
}
}
}[/LEFT]
} 
[/SIZE]

Mfg
 
Zuletzt bearbeitet:
Zurück
Oben Unten