Frage zu Programm rechnen Java?


13.01.2022, 19:01

So sieht mein Code aus aber wie kann ich es ändern damit beim eingeben zb 1 + 2 direkt 3 kommt und nicht zuerst „erste Zahl, dann zweite Zahl und dann den oper


13.01.2022, 19:02

code

dervondaoben28  13.01.2022, 19:13

Also du willst, dass man in den Scanner besipielsweise 1+2 eingibt, der das erkennt und berechnet und dann das Ergebnis, in diesem Fall 3 ausgibt?

dunya18 
Beitragsersteller
 13.01.2022, 19:15

Ja also bsw. In dem cmd geöffnet gebe ich den Wert java Calculator 1 + 2 ein und drücke auf enter. Dann möchte ich dass er mir direkt das Ergebnis anzeigt

3 Antworten

Du liest die ganze Zeile aus, packst das in ein String, welches du dann an einem gewissen Zeichen splittest. Wenn du das dann noch in ein int umwandelst, kannst du damit rechnen:

Scanner s = new Scanner(System.in); 
String alles = s.nextLine(); 
String zahlen = alles.split(rechenzeichen); 

Dann hättest du für das Beispiel 1+2 dann als Ergebnis dann Array

zahlen[0] mit dem Inhalt 1 und zahlen[1] mit dem Inhalt 2. Diese müsstest du dann noch in ein Int umwandeln. Das Rechenzeichen dazwischen kannst du mit der Methode contains() prüfen und demendsprechend darauf reagieren

contains() wird hier nochmal genauer erklärt :

https://www.delftstack.com/de/howto/java/how-to-check-if-a-string-contains-character-in-java/#:~:text=Die%20contains()%20Methode%20von,andernfalls%20gibt%20sie%20false%20zur%C3%BCck.

Ist zwar etwas umständlich, allerdings hätte ich keine andere Idee, wie man es sonst machen solll.

Guten Abend,

ich gehe mal davon aus, dass du ein einfaches Programm ohne grafische Oberfläche programmierst.

Du kannst über die Klasse "Scanner" den Text mithilfe einer Eingabe abfragen. Das machst du wahrscheinlich auch bereits bei deinem aktuellen Programm.

Die Kunst besteht darin nicht die Zahlen direkt als "Double" abzufragen sondern ganz normal als Text, wo der Nutzer einmal die komplette Rechnung eingibt. Aus dem abgefragten Text ziehst du dir die Zahlen quasi raus und prüfst ob es sich überhaupt um welche Handelt. Auch den Operator kannst du dir direkt aus dem Gesamttext abgreifen und am Ende mithilfe von if/else bestimmen.

Das hört sich in der Theorie ein wenig komisch an, deshalb mache ich dir gerne ein kleines Beispiel:

So würde dann deine Abfrage aussehen:

Scanner scan = new Scanner(System.in);
String nutzerEingabe = scan.nextLine();

Du speicherst eine komplette Zeile die eingelesen wurde erst einmal in einem String.

Aus diesem ziehen wir uns jetzt im nächsten Schritt alle Informationen die wir brauchen.

Da wir nachfolgend Text zu Zahlen verarbeiten nutzen wir eine try/catch-Funktion um im Fehlerfall abzubrechen und eine Fehlermeldung für den Nutzer zu erzeugen, falls beispielsweise Mango + Mango eingegeben wurde. (Wo ja überhaupt keine Zahlen enthalten sind)

try {
		String zahl1 = (nutzerEingabe.split(" "))[0];
		double number1 = Double.valueOf(zahl1);
			
		String zahl2 = (nutzerEingabe.split(" "))[2];
		double number2 = Double.valueOf(zahl2);
			
		String operator = (nutzerEingabe.split(" "))[1];
		double ergebnis;
		
		if (operator.equals("+")) {
			ergebnis = number1 + number2;
			System.out.println("Das Ergebnis lautet: " + ergebnis);
		}
			
} catch (Exception e) {
	   System.out.println("Deine Eingabe war ungültig. Bitte versuche es erneut!");
}

Wir gehen in den Text und filtern ihn nach den Leerzeichen, was bei solchen Eingaben funktioniert "1 + 1" aber bei solchen nicht "1+1". Bedeutet unser Programm setzt die Schreibweise mit Leerzeichen voraus. Für die andere Version oder eine Kombi müsste man entsprechend anders Filtern, das kann ich dir bei Bedarf gerne auch noch zeigen.

Hinter bzw. vor jedem Leerzeichen stehen die gesuchten Zahlen bzw. der gesuchte Operator, den wir dann nur noch abgleichen müssen. Die entsprechenden Textstellen wandeln wir in einen Double um (und an dieser Stelle kommt auch ein Fehler, wenn keine Zahlen eingegeben wurden) bzw. gleichen den String beim Operator ab. Ich habe das ganze im Beispiel mal nur für die Addition programmiert, alle weiteren Operatoren kannst du nach gleichem Schema dem Programm beibringen.

Das Programm berücksichtigt aktuell nicht den Fall, das passender Operator abgeglichen wird, dieses läuft dann einfach ins Leere! Entsprechend müsste man das noch anpassen.

Ich hoffe ich konnte dir helfen und stehe selbstverständlich für weitere Rückfragen zur Verfügung! Für ausführliche Hilfe mit Java, kann ich dir nur wärmstens IT-Foro.com empfehlen, gerade wenn es um Code-Ausschnitte geht bringt die Seite für Hilfe einfach eine bessere Übersicht mit sich.

Liebste Grüße


ItForo  13.01.2022, 19:41

Korrektur: Das Programm berücksichtigt aktuell nicht den Fall, das kein passender Operator gefunden wird, dieses läuft dann einfach ins Leere! Dort müsste man das ganze entsprechend mit "else if" noch anpassen.

1

Also erstmal musst du einen Scanner importieren damit du was im Programm eingeben kannst heißt. Du musst die beiden zahlen die du ausrechnen musst als Variable speichern

Geben sie ihre erste Zahl ein

Du kannst zahl eingeben

Dann du machen glaube ich

System.out.println("Ihr Ergebnis ist" + (Variable1 + Variable2))

Wenn du machen möchtest das man aussuchen kann ob dividieren multiplizieren addieren oder subtrahieren dann musst du Koje ne seitch Nase anweisunt machen

Achso ich sehen grade du haben bearbeitet am besten du machen mit Switch case und nicht mit if switch case dann besser.


dunya18 
Beitragsersteller
 13.01.2022, 19:05

Ja den Scanner habe ich :)

0
JordenJost121  13.01.2022, 19:07
@dunya18

Ok du haben Bearbeiterih vorher nichts sehen aber du machen am besten mit Switch case weil Switch case ist besser in der Situation als if.

0