java Calculator

w_wintersun

Grünschnabel
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!!

Java:
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
 
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...
 
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.
 
Geht mal genau durch was dein Programm dort macht. Du liest immer die Zahl ein und den Operator
Bei 1 + 2 * 3
Java:
        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? ^^
 
Zurück