Calculator java

  • Themenstarter Themenstarter JavaLehrling
  • Beginndatum Beginndatum
J

JavaLehrling

Gast
Hallo liebe Community... ich bin noch ein Neuling in Java und bräuche bei meinem Taschenrechner, den ich in Java implementieren soll, hilfe. und zwar soll ich beim kompilieren im Editor die Eingabe gleich mitliefern. Also quasi: java Calculator 2*2. Das funktioniert bei mir leider noch nicht...

Der Rechner soll im Allgemeinen die Grundrechnungsarten beherrschen... Ich hab einstweilen nur "*" und "/" implementiert.

Code:

Java:
import java.util.Scanner;
import java.util.Stack;

public class Calculator {
	
	public static void main(String[] args){
		
		Scanner scan = new Scanner(System.in);
		
		int sum = 0;
		int i = scan.nextInt();
				
		while (scan.hasNext() == true) {
			String op = scan.next();
			int j = scan.nextInt();
			
			if (op == "*"){
				if (sum == 0)
					sum = i*j;
				else sum = sum*j;
			}
			
			else if (op == "/"){
				if(sum == 0)
					sum = i/j;
				else sum = sum/j;
			}
			
			else{
				System.out.println("Input falsch!");
				break;
			}
		}
		System.out.println(sum);
		}
	}

Danke bereits im Vorhinen für Hilfestellung

Lg JavaLehrling
 
"funktioniert nicht" ist keine nützliche Problembeschreibung.

Was aber auf den ersten Blick auffällt: http://www.java-forum.org/top-fragen/1350-vergleichen-strings.html

ok gut zu wissen, das hab ich mal ausgebessert 🙂... Ja die Fehlermeldung bleibt🙁

5*5
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:857)
at java.util.Scanner.next(Scanner.java:1478)
at java.util.Scanner.nextInt(Scanner.java:2108)
at java.util.Scanner.nextInt(Scanner.java:2067)
at Calculator.main(Calculator.java:11)
 
Tipp:
vor der Operator-Unterscheidung die benötigten Werte in zwei Variablen zurechtlegen,
dann brauchst du nur dort einmal schauen ob sum 0 ist (allerdings könnte das auch ein Zwischenergebnis sein..)
und nicht bei jedem Operator neu

zur Fehlermeldung: gib Leerzeichen ein
 
Gut, dass mit den Variablen versteh ich... Nur wie meinst du das mit Leerzeichen? In der Eingabe?
 
jetzt hängst du an scan.hasNext(), das ist anscheinend eine nicht optimale Sache,
wartet einfach bis was da ist statt direkt false zurückzugeben,
da mit nächster Eingabe auch was da sein würde kann nur ein Ende des InputStreams zu false führen,
was kaum der Fall sein wird vor Programmende,

schwierig, anderseits auch vorteilhaft, du willst ja sicher bald noch mehr eintippen?
setze eine Ausgabe ans Ende der Schleife und stell dir dann das Programm wie einen wartenden Taschenrechner vor,
oder ist Schleifenabbruch unbedingt nötig?
 
Klappt 😀 danke... Ich weiß zwar nicht ob das möglich ist, aber wenn ich weitere Fragen hätte, könnte ich sie gleich hier anschließend posten?
 
kannst du machen, obwohl nach einiger Zeit neue Themen wohl mehr User anziehen,
wenn du angemeldet wärst könntest du auch selber die Erledigt/ Offen-Anzeige steuern/ wechseln,
so setze ich vorerst auf Erledigt
 

Neue Themen


Zurück
Oben