Einlesen von double und char(?)

Status
Nicht offen für weitere Antworten.

blawa

Mitglied
Hi Leute,
ich bin hier neu, und weis nicht,ob die Frage eine 'Anfängerfrage' ist.

Naja aber hier mein Problem:

Ich soll folgendes aus einer Textdatei einlesen können:
double(d) double(d) Rechenzeichen(R) (meiner Meinung nach ein Char)
Das ganze soll beliebig oft gehen (also zb d,d,R,d,d,R,d,d)
aber mit folgenden Randbedingungen:
Wenn nur d,d eingegeben wird, soll ich sie an meine Klasse übergeben.
Wenn R am Ende der Eingabe steht, soll zB ein boolean auf falsch gesetzt werden.

Nun zu meiner Klasse:
Die Klasse ist eine Komplexe Zahl, mit 3 Methoden (addieren, subtrahieren, multiplizieren); die Klasse habe ich fertig, und die funktioniert auch, nur ergibt sich dadurch für oben wieder ein Problem:

Eingabe:
d,d => Ein Objekt erstellen O(d,d)
d1,d1,R,d2,d2 => 2 Objekte O1(d1,d1) O2(d2,d2) mit R 'verknüpfen';
Sollte jetzt noch einmal R,d3,d3 kommen, so muss ich das vorherige Ergebniss mit dem neuen Objekt verknüpfen.

Ich habe schon 3 Ansätzte probiert, leider klappt keiner davon, aber ich poste ihn mal, vielleicht kann mir jemand sagen wo mein Fehler liegt, bzw kann mir sagen, wie ich diesen Code vereinfachen kann:

Lösungsversuch 1:
Code:
// --------- Variablen ---------
		Scanner scan = new Scanner(System.in);
		
		Complex a = new Complex (0,0);
		Complex Ergebniss = new Complex (0,0);
		boolean falsch = false;
		double Real1=0;
		double Imag1=0;
		int WelcherTeil=0;
		int Anzahl=0;
		char Operator = 'a';
		
		// --------- Einlesevorgang ---------
		while (true) {
			if (scan.hasNextDouble()) {
				Real1=scan.nextDouble();
				WelcherTeil++;
				
				if (scan.hasNextDouble()) {
					Imag1=scan.nextDouble();
					WelcherTeil++;
					Anzahl++;
				} else {
					falsch = true;
					break;
				}
			} else {
				if (WelcherTeil ==3 && scan.hasNext()) {
					Operator = scan.next().charAt(0);
					WelcherTeil = 1;
					switch (Operator) {
					case '+': break;
					case '-': break;
					case '*': break;
						default: falsch = true; break;
						
					}
					if ((scan.hasNextDouble() == false) || (falsch==true)) {
						falsch= true;
						break;
					}
				}
				if (WelcherTeil ==3 && scan.hasNext() == false && Anzahl ==1) {
					Ergebniss = new Complex(Real1, Imag1);
				}
				if (WelcherTeil != 3 && WelcherTeil != 1) {
					falsch = true;
					break;
				}
			}
			
			if (Anzahl == 1) {
				Ergebniss = new Complex(Real1, Imag1);
			}
			if (Anzahl >= 2) {
				a = new Complex(Real1, Imag1);
				switch (Operator) {
				case '+': Ergebniss = Ergebniss.add(a); break;
				case '-': Ergebniss = Ergebniss.sub(a);	break;
				case '*': Ergebniss = Ergebniss.mul(a); break;
				default: falsch = true;break;
				}
				
			}
			
			if (scan.hasNext() == false) break;
		}
		if ( falsch == false) {
			Ergebniss.print();
		}
		else {
			System.out.println("FALSCHE EINGABE");
		}


Lösungsversuch 2:
Code:
// --------- Variablen ---------
		Scanner scan = new Scanner(System.in);
		
		Complex a = new Complex (0,0);
		Complex Ergebniss = new Complex (0,0);
		boolean falsch = false;
		double Real1=0;
		double Imag1=0;
		int WelcherTeil=1;
		int Anzahl=0;
		char Operator;
		
		// --------- Einlesevorgang ---------
		while (true) {
			System.out.print("while zündet");
			if(scan.hasNextDouble()) {
				switch (WelcherTeil) {
					case '1': Real1 = scan.nextDouble(); WelcherTeil++; System.out.print(Real1); break;
					case '2': Imag1 = scan.nextDouble(); WelcherTeil++; Anzahl++; System.out.print(Imag1); break;
					default: falsch = true; break;
				}
			}
			
			if ( (Anzahl>=2) && (WelcherTeil == 3) ) {
				a = new Complex(Real1, Imag1);
				}
				
			if (Anzahl ==1) {
				Ergebniss = new Complex(Real1, Imag1);
			}
			
			if ( (WelcherTeil==3) && (scan.hasNext()) ) {
				Operator = scan.next().charAt(0); 
				WelcherTeil=1;

				if (Anzahl>=2) {
					switch(Operator) {
						case '+': Ergebniss = Ergebniss.add(a);break;
						case '-': Ergebniss = Ergebniss.sub(a);break;
						case '*': Ergebniss = Ergebniss.mul(a);break;
						default: falsch = true;break;
					}
				}
			}
			if (falsch == true || scan.hasNext() != true) break;
		}
	if ( falsch == false) {
		Ergebniss.print();
	}
	else {
		System.out.println("FALSCHE EINGABE");
	}

Leider endet es in einer Endlosschleife, bzw wird gar nicht ausgeführt....
AN und für sich würde es mir völlig reichen, wenn mir jemand sagen könnte wie ich diese Abfrage abwechselnd machen kann, bzw wie ich einfacher diese ganzen Sonderfälle abfange.....

Hoffe, dass mir jemand helfen kann...
mfg blawa
 
S

SlaterB

Gast
Variablen immer klein schreiben,
Ergebnis oder Doppel-s

nie in deinem Leben irgendwo == true oder != true schreiben,
es reicht
if (falsch || !scan.hasNext())
bzw.
if (!falsch) {


-----------

ist dein Einlesevorgang überhaupt variabel?
was machst du bei einem falschen Format, z.B. d, R, d, R?
wenn die Reihenfolge vorgegeben ist, dann mache doch einfach
- erste Zahl einlesen
- zweite Zahl einlesen
- Rechenzeichen einlesen
ohne große if/ else, zumindest mit deutlich weniger if/ else

bei einem Fehler wird der Scanner eine Exception werfen,
die du dann einmalig abfängst

--------

deine Verarbeitung des Operators verstehe ich nicht,
nehmen wir mal die Eingabe
1,2,+,3,4,-,5,6

den ersten Operator, hier das + ignorierst du IMMER? (Anzahl >= 2)

macht das schonmal Sinn?
wenn du beim zweiten Operator angelangt bist, dann hast du Ergebnis = 1,2, a = 3,4 und Operator -

jetzt rechnest du 1,2 - 3,4 ??
das Minus bezieht sich doch erst auf die folgende Zahl 5,6?

5,6 ist das letzte a am Ende, aber das wird in deiner Rechnung dann nicht mehr miteinbezogen..
 

blawa

Mitglied
Stimmt, keine Ahnung was ich da gemacht habe....
Aber ich habe mir jetzt eine andere Lösung überlegt und die klappt auch wunderbar, trtzdem danke.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
C Mehrere Double werte einlesen Java Basics - Anfänger-Themen 5
J mehrere double Werte einlesen Java Basics - Anfänger-Themen 18
F double einlesen Java Basics - Anfänger-Themen 6
S Double einlesen und auf fehler überprüfen Java Basics - Anfänger-Themen 11
D int wert einlesen double ausgeben probleme Java Basics - Anfänger-Themen 10
S externe Datei unformatiert einlesen & in double konverti Java Basics - Anfänger-Themen 2
W Double Werte von eine txt Datei direkt einlesen Java Basics - Anfänger-Themen 4
M binäre Daten als Double einlesen Java Basics - Anfänger-Themen 22
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben