Anfänger Taschenrechner Frage

Amarok

Mitglied
Hallo zusammen ich bin der neue hier.

Ich bin gerade dabei mich in Java einzuarbeiten (2 Wochen) und habe einen sehr simplen Taschenrechner geschrieben.
Der läuft auch soweit, aber ich habe eine Frage: Wie kann ich einen Operator definieren?

1.Ich fodere den Benutzer auf die erste Zahl einzugeben.
2.Dann sollte der Benutzer den Operator eingeben (+,- usw.).
3.Dann wird er Aufgefordet die zweite Zahl einzugeben.
4.Und dann wird das Ergebnis ausgegeben.

Und da verstehe ich nicht wie man das macht, das der Benutzer einen Operator eingeben muss.
Habe zwar schon mehere Tuts mir angesehen aber die meisten waren mir GUI oder mir zu komplex.

Ich hoffe ich konnte mein Problem erklären.
Danke schon mal im Vorraus.
MFG


Java:
public class Taschenrechner {														// Simpler Taschenrechner

	public static void main(String []args){
		
		double zahl1,zahl2 = 0,Ergebnis;
		
		Scanner scannerVariable = new Scanner(System.in);
		
		System.out.println("Bitte erste Zahl: ");									// Erste Zahl einlesen.
		zahl1 = scannerVariable.nextDouble();
		
		
		System.out.println("Bitte zweite Zahl: ");									// Zweite Zahl einlesen.
		zahl2 = scannerVariable.nextDouble();
		
		
		Ergebnis = zahl1+zahl2;														// Ergebnis auswerten.
		System.out.println("Das Ergebnis der Addition lautet: "+Ergebnis);			// Ergebnis Ausgabe.
		
		
		Ergebnis = zahl1*zahl2;														// Ergebnis auswerten.
		System.out.println("Das Ergebnis der Multiplikation lautet: "+Ergebnis);	// Ergebnis Ausgabe
		
		
		Ergebnis = zahl1-zahl2;														// Ergebnis auswerten.
		System.out.println("Das Ergebnis der Subtraktion lautet: "+Ergebnis);		// Ergebnis Ausgabe.
		
		
		Ergebnis = zahl1/zahl2;														// Ergebnis auswerten.
		System.out.println("Das Ergebnis der Division lautet: "+Ergebnis);			// Ergebnis Ausgabe.
		
		
	}
	
}
 

stg

Top Contributor
Ganz allgemeine Antwort:
Benutzereingaben sind zunächst einfach mal nur irgendwelche Zeichen(ketten). Nun bleibt es dir überlassen, wie du die eingegebenen Zeichen interpretierst und wie du daauf reagierst.
Code:
Warte auf Benutzereingabe
Wenn Benutzereingabe = +, dann führe Addition durch
Sonst
   Wenn Benutzer eingabe = -, dann führe Subtraktion durch
Sonst
   ...
Gib Ergebnis aus
 

Amarok

Mitglied
@stg Danke dir erstmal für deine Hilfe.

Moin zusammen

Ich versuche mich immernoch an meinen Taschenrechner und bekomme eine Fehlermeldung mit der ich nichts anfangen kann.
Hatte mir gedacht ich versuche die Operator Auswahl mit switch case.
Habe zurzeit nur die Zeilen für addition geschrieben.

Java:
import java.util.Scanner;


public class Testrechner {
	
	

		
	public static void main(String args[]){

	int zahl1, zahl2, ergebnis;
	int operator;

	Scanner eingabe = new Scanner (System.in);

	System.out.println("Taschenrechner 2.2");


	System.out.println ("Bitte geben Sie die erste Zahl ein: ");
	zahl1 = eingabe.nextInt();


	System.out.println ("Bitte geben Sie die zweite Zahl ein: ");
	zahl2 = eingabe.nextInt();


	System.out.println ("Bitte geben Sie einen Operator ein: ");
	operator = eingabe.nextInt();
	
	switch(operator){
	case 1: if(operator == '+'){
		ergebnis = zahl1+zahl2;
	System.out.println(zahl1+'+'+zahl2 +'='+ergebnis );
	break;
	}
	}
	}
	}

Ich verwende Eclipse
Als Fehlermeldung bekomme ich:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Testrechner.main(Testrechner.java:28)

Ich hoffe mir kann das jemand erklären was er von mir will:bahnhof:

Danke euch
mfg
 

jeegeek

Mitglied
Ahhh also müsste ich den Operator in ein char machen. Richtig?

Ich würde einen String nehmen. Also im Prinzip ein eingabe.next(). Denke aber bitte auch daran das dein Programm prüfen sollte ob eine Eingabe gemacht wurde und diese überhaupt gültig ist damit das Programm nicht bei einer falschen Eingabe abstürzt. Ich weiß das ist Mehrarbeit, aber gewöhne es dir am besten gleich an sichere Programme zu schreiben. Du könntest auch die Eingabe in eine eigene Methode auslagern welche sich dann darum kümmert das die Eingabe den Anforderungen entspricht.
 

Amarok

Mitglied
@jeegeek Danke für den Hinweis.

Ich werde eine Prüfung mit einbauen, wenn ich den Taschenrechner mal zum laufen bekommen habe.:D

Das mit dem Auslagern in eine eigene Methode habe ich jetzt noch nicht so richtig verstanden.
Welchen Vorteil würde das mitsich bringen?

MFG Amarok
 

jeegeek

Mitglied
Das mit dem Auslagern in eine eigene Methode habe ich jetzt noch nicht so richtig verstanden.
Welchen Vorteil würde das mitsich bringen?

Der große Vorteil ist das du die ganze Fehlererkennung nur einmal Programmieren musst und in deiner Hauptschleife einfach sagst zahl1 = benutzerEingabe();. Ich habe vor einiger Zeit mal als Aufgabe einen Taschenrechner schreiben müssen und habe eine Methode geschrieben die eine Dialogbox anzeigt und den Nutzer nach einer Zahl oder einen Operator fragt. Beim Aufruf gibst du der Methode einen Text für die Dialogbox und die Information was du als Rückgabe erwartest. In diesem Fall sind Integer und Operator möglich. Die Methode prüft dann ob die eigegebene Zahl umgewandelt werden kann oder ein Operator unterstützt wird. Wenn der Benutzer einen ungültigen Wert eingibt dann wird der Dialog erneut angezeigt, wenn der Benutzer abbricht liefert die Methode null zurück. Die Methode ist schon etwas älter und nicht optimal, aber als Grundlage gut nachvollziehbar. Du müsstest es natürlich so umbauen das die Eingabe in der Konsole erfolgt.

Hier ein kleines Beispiel:
Java:
String eingabe=benutzerEingabe("Integer","Bitte erste Zahl eingeben:");
			if (eingabe==null)
			{
				//Benutzer hat die Eingabe abgebrochen also beenden
				System.exit(0); //Ende
			}
                       else
                                int zahl1 = Integer.parseInt(eingabe);

Java:
	static String benutzerEingabe(String typ, String dialogText){
		/* ##############################################################################
		 * Die Methode benutzerEingabe nimmt die Eingaben des Benutzers entgegen
		 * und stellt sicher das diese den Anforderungen des Programms entsprechen.
		 * Der vom Aufrufer erwartete Rückgabetyp wird über den Parameter typ übergeben.
		 * Mögliche Rückgaben sind Integer und Operator. Es wird geprüft ob
		 * eine Umwandlung in den gewünschten Typen möglich ist oder ein eingegebener
		 * Operator unterstützt wird. Wenn der Anwender den Dialog abbricht liefert
		 * die Methode den Wert null zurück. Der Text der Dialogbox wird über dialogText
		 * übergeben.
		 * 
		 * !!!WARNUNG:!!!
		 * Die Methode ist in der Lage das Programm zu beenden. Sollte der Programmierer
		 * einen ungültigen typ übergeben wird das Programm beendet da eine fehlerfreie
		 * Funktion nicht mehr möglich ist, da sich die Hauptschleife auf einen
		 * korrekten Rückgabewert verlässt.
		 * 
		 * Verwendete Variablen:
		 * erfolg				[boolean] 	Steuervariable für die Hauptschleife.
		 * eingabe				[String]	Speichert die Benutzereingabe.
		 * dialogTextOriginal	[String]	Kopie von dialogText
		 */
		
		boolean erfolg=false;
		String eingabe=null, dialogTextOriginal=dialogText;
		
		do
		{
			//Benutzereingabe entgegen nehmen
			eingabe=JOptionPane.showInputDialog(dialogText);
			if (eingabe==null)
				//Benutzer hat abgebrochen, also ist hier Schluss
				return eingabe;
			
			//prüfen welcher Rückgabewert erwartet wird 
			if (typ=="Integer")
			{
				//prüfen ob umwandlung in Integer möglich ist
				try
				{
					Integer.parseInt(eingabe);
					erfolg=true;
				}
				catch (Exception e)
					//Umwandlung war nicht möglich, dialogText anpassen und noch einmal	
					{
						dialogText = "Ihre Eingabe war nicht zulässig, bitte wiederholen Sie Ihre Eingabe!\n" + dialogTextOriginal;
					}
			}
			
			else if (typ=="Operator")
			{
				//prüfen ob eine solche Rechenoperation verfügbar ist
				switch (eingabe)
				{
					//mögliche Operatoren
					case "+":
					case "-":
					case "/":
					case "*":
					case "E":
					case "^":
						erfolg=true;
						break;
					default:
						//Eingabe war ungültig.
						dialogText = "Diesen Operator gibt es nicht!\n" + dialogTextOriginal;
				}
			}

			else
			{
				//Wenn wir hier ankommen hat der Programmierer einen Fehler gemacht.
				//Wir weißen noch auf den Fehler hin und beenden das Programm
				//da es nicht mehr Fehlerfrei ablaufen kann.
				System.out.println("\nInterner Fehler in benutzerEingabe");
				System.out.println("Der Parameter \"" +typ +"\" ist unbekannt. Programm wird angehalten!");
				System.exit(0);
			}
		} while (erfolg==false);
		
		//Alles erledigt, nun die Eingabe zurückgeben
		return eingabe;
	}
 

Amarok

Mitglied
@jeegeek Danke dir für die Vorlage werde mal sehen wenn ich mein zum laufen bekommen habe, ob ich sowas in der Richtung mit eingebaut bekomme.

MFG Amarok
 

Amarok

Mitglied
Moin Moin ich schon wieder....


Ich bekomme das Problem nicht gelöst einen Operator einzulesen, für euch ist das sicherlich kein Problem, aber ich drehe mich hier im Kreis.
Wäre einer so nett mir grob zu erklären wie ich den Operator einbinden muss?

Ich lasse vom Benutzer zwei Zahlen vom Typ Integer einlesen.
Wie lasse ich aber einen Operator einlesen?
Habe jetzt mehere Beiträge durchforstet mal wird der Operator als String mal alc char eingelesen und dann irgendwie wieder als Integer konvertiert.

Jetzt habe ich mehere Tuts durchgestöbert aber dennoch bekomme ich mein Problem nicht gelöst.

Falls mir einer kurz Helfen könnte wäre ich sehr Dankbar....

MFG amarok
 

SilverClaw

Aktives Mitglied
Ich lasse vom Benutzer zwei Zahlen vom Typ Integer einlesen.
Wie lasse ich aber einen Operator einlesen?
Habe jetzt mehere Beiträge durchforstet mal wird der Operator als String mal alc char eingelesen und dann irgendwie wieder als Integer konvertiert.

Keine Ahnung, was das genau soll, den als Integer zu lesen....
aber du brauchst doch eigenetlich nur sowas wie
Scanner scan = new Scanner(System.in)

String operator = scan.next();
switch(operator) {

case "+"; // addiere
break;
case "-" // subtrahiere
break;
//und so weiter...
default: //Fehlermeldung oder sowas?
break;
}
 

Java20134

Bekanntes Mitglied
Oder du baust es so auf:
Java:
System.out.println("Addition: 1; Subtraktion: 2;...");

Scanner sc = new Scanner(System.in);
System.out.println("Welche Rechenoperation?");
String rechnung = sc.next();

Switch(rechnung){
case 1: //hier führst du die erste Rechnung aus 
break;
case 2: //hier führst du die zweiteRechnung aus
break;
case 3: //hier führst du die dritte Rechnung aus
break;
case 4: //hier führst du die vierte Rechnung aus
break;
default: System.out.println("Fehler!");
break; }
System.out.println("Das Ergebnis lautet: " +Ergebnis);
 

SilverClaw

Aktives Mitglied
Oder du baust es so auf:
Java:
System.out.println("Addition: 1; Subtraktion: 2;...");

Scanner sc = new Scanner(System.in);
System.out.println("Welche Rechenoperation?");
String rechnung = sc.next();

Switch(rechnung){
case 1: //hier führst du die erste Rechnung aus 
break;
case 2: //hier führst du die zweiteRechnung aus
break;
case 3: //hier führst du die dritte Rechnung aus
break;
case 4: //hier führst du die vierte Rechnung aus
break;
default: System.out.println("Fehler!");
break; }
System.out.println("Das Ergebnis lautet: " +Ergebnis);

Würde das nicht einen String mit int-Werten vergleichen? :autsch:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
E Anfänger Taschenrechner Java Basics - Anfänger-Themen 3
F simpler Taschenrechner (blutiger Anfänger) Java Basics - Anfänger-Themen 7
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
G Anfänger-Errors und Fragen Java Basics - Anfänger-Themen 22
S Java für Anfänger: Probleme mit read() Java Basics - Anfänger-Themen 20
P [Anfänger] DiceGame Aufagbe Java Basics - Anfänger-Themen 23
C Input/Output Anfänger Array-Verständnis Frage Java Basics - Anfänger-Themen 7
W Erste Schritte OOP-Lektüre für Anfänger/Umsteiger von Clipper auf Java Java Basics - Anfänger-Themen 6
J Welches Java-Videotutorial für Anfänger empfehlenswert? Java Basics - Anfänger-Themen 7
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
P Java anfänger tutorial gesucht Java Basics - Anfänger-Themen 12
P Viereck mit Sterne - Anfänger bittet um Kritik und Anregung Java Basics - Anfänger-Themen 11
B Java für Anfänger Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben