# java Calculator



## w_wintersun (30. März 2011)

Hallo Freunde,

Ich bin ein Anfänger von Java und wollte ein Calculator programm schreiben.
Wenn ich einfach so eingabe z.B : 1 + 2 * 3, muss das Programm 7 ausgeben.
Ich habe folgendes code geschrieben, aber ich komme immer 9 heraus statt 7.

Ich weiß nicht wo ich falsch mache!!


```
import java.util.Scanner;
import java.util.Stack;

public class Calculator {


	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		

		int summe = 0;
		int i = sc.nextInt();
		
		while ( sc.hasNext()) {
			
			char op = sc.next().charAt(0);
			int j = sc.nextInt();
			
			
			if ( op == '*') {
				
				if ( summe == 0 )
					summe = i*j;
				else
					summe *= j;
				
			}
			else if ( op == '/' ) {
				
				if ( summe == 0 )
					summe = i/j;
				else
					summe /= j;
				
			}
			else if ( op == '+' ){
				
				if ( summe == 0 )
					summe = i+j;
				else
					summe += j;
			}
			else if ( op == '-' ) {
				
				if ( summe == 0 )
					summe = i-j;
				else
					summe -= j;
				
			}
			else {
				
				System.out.println("FALSCHE EINGABE");
				break;
			}	
			
		}
		System.out.println(summe);
		
		
		
	}

}
```

Danke im Voraus


----------



## genodeftest (30. März 2011)

Dein Programm scheint "Punkt vor Strich" zu ignorieren. Das liegt daran, dass die Rechenzeichen von vorne nach hinten abarbeitest. Du musst aber zuerst alle Operationen mit "Punkt", also * und / durchführen, danach die mit "Strich".
Das kann ganz schön kompliziert werden...


----------



## w_wintersun (31. März 2011)

genodeftest hat gesagt.:


> Dein Programm scheint "Punkt vor Strich" zu ignorieren. Das liegt daran, dass die Rechenzeichen von vorne nach hinten abarbeitest. Du musst aber zuerst alle Operationen mit "Punkt", also * und / durchführen, danach die mit "Strich".
> Das kann ganz schön kompliziert werden...


 

Danke für deine Antwort, aber ich weiß nicht ganz genau, wie ich machen soll?
Kannst du mir ein Bsp geben?

Danke im Voraus!

Lg.


----------



## MiMi (1. April 2011)

Geht mal genau durch was dein Programm dort macht. Du liest immer die Zahl ein und den Operator
Bei 1 + 2 * 3

```
int summe = 0;
        int i = sc.nextInt(); // 1
        
        while ( sc.hasNext()) {
            
            char op = sc.next().charAt(0); // +
            int j = sc.nextInt(); // 2
```
1 + 3 = 3
Logisch oder? ^^


----------



## w_wintersun (1. April 2011)

Ja das ist schon klar, aber ich weiß nicht genau, wie ich zuerst multipliziere und dann addiere?


----------



## Maik639 (3. April 2011)

Ganz leicht im pinzip.
Die aufgabe ist ja auch nur ein String.
Mit indexOf() könntest du nach * und / suchen und dann die zahlen davor und dahinter mit substring ermitteln. Dann "ZAHL * ZAHL" durch das ergebnis ersetzen und weiter...

Alles was du sonst noch dafür benötigst findest du hier:
http://download.oracle.com/javase/6/docs/api/java/lang/String.html

Grüße Maik


----------

