# Taschenrechner



## tweek (27. Nov 2009)

Ich bin Newbie in Java (hab erst vor knapp 1nen Monat angefangen) und habe gestern eine Aufgabe bekommen und komm leider nicht weiter. Ich weiß, dass man es mit dem Tokenizer evtl. lösen könnte, aber wie es gehen sollte, kann ich immernoch nicht verstehen.

Da ist die Aufgabe:


> > Das Programm soll folgende Funktionalitäten erfüllen:
> > Bei dem Programm handelt es sich um einen Taschenrechner.
> > Der Taschenrechner soll als Parameter einen String übergeben bekommen
> > und das Ergebnis berechnen. z.B. Eingabe: taschenrechner 1 + 2
> ...




```
import java.util.StringTokenizer;
import java.io.*;


public class calc {
public static void main(String[] args) throws Exception{
	BufferedReader eingabe = new BufferedReader(
			   new InputStreamReader(System.in));
	String strTest;
	strTest=eingabe.readLine();
	strTest=strTest.replace(" ", "");
	StringTokenizer text = new StringTokenizer (strTest, "("+")");
	while(text.hasMoreTokens()){
		String feld = (String)text.nextToken();
        }

}
}
```

Wie soll ich vorgehen????? Hilft mir bitte!!!!! :rtfm::rtfm::bahnhof::bahnhof::bahnhof:


----------



## tweek (27. Nov 2009)

[JAVA=12] 
StringTokenizer text = new StringTokenizer (strTest, "("+")");
while(text.hasMoreTokens()){
        String feld = (String)text.nextToken();
        }
[/code]
Das stimmt schon mal nicht. 

Wäre es vllt. sinnvoll den gesammten String in ein char [] umzuwandeln???

Oder evtl. wie in MySQL den Inhalt zwischen "(" und ")" durchsuchen?

```
"("%")"
```
und diesen Inhalt dann erneut durchsuchen???


----------



## SlaterB (27. Nov 2009)

ich glaube mit Tokenizer wird das schwer,
bei beliebiger geschalteter Eingabe geht besser, Zeichen für Zeichen analysieren, Ziffern dabei zu Zahlen zusammenfassen

wird allerdings recht kompliziert, etwa
http://www.java-forum.org/allgemeines/12306-parser-fuer-mathematische-formeln.html

nach deinen bisherigen Fragen eigentlich nicht zu lösen


----------



## partsch (28. Nov 2009)

eine andere Möglichkeit wäre auch, dass du den übergebenen in einen char Array umwandelst und dann eine Methode schreibst die den charackter überprüft ob er ein operator bzw operant ist. Diese die den "Test bestehen" steckst du dann in einen Stack rein oder nen zweiten Array und wandelst sie danach um. Dann hast du die zwei Zahlen und den Operator und dann brauchst du nur noch ein switch um den richtigen Operator auszulesen und dann das Ergebnis zurück geben.


----------

