Zweiseitige Auswahl

Status
Nicht offen für weitere Antworten.
R

Rabbit2001

Gast
Hallo!

Ich habe folgende Aufgabenstellung bei einer Hausaufgabe für die Schule:

Es soll der Gesamtwiderstand zweier Parallel oder in Reihe geschaltener Widerstände ausgegeben werden.

Wenn der Benutzer ein "R" eingibt, soll die Berechnung für die Reihenschaltung ausgeführt werden und bei "P" dann die Berechnung für die Parallelschaltung.

Jetzt mein Problem: ich weiß nicht wie ich das mit dem Buchstabeneinlesen hinbekommen soll bzw. das mit der Auswahl zwischen "R" und "P".

Schaut euch bitte meinen Code an und es wäre super, wenn ihr den/die Fehler entdecken würdet.

Vielen Dank schon im Vorraus!

Liebe Grüße




*Programmbeschreibung: Berechnet den Gesamtwiderstand zweier parallel oder in Reihe geschalteter Widerstände und gibt ihn aus.
*
*/


Code:
 import java.io.*;
 
 public class Widerstand
 
 {
 		
 	public static void main (String args[]) throws IOException
 	{
 		//Variablendeklaration
 		
 		double r1, r2, ergebnis;
 		
 		char p = 'P';
 		char r = 'R';
 		int zeichen;
 		String str;
 		
 									
 		System.out.println("Widerstands-Schaltung");
 		
 		System.out.println("(P)arallel- oder (R)eihenschaltung?");
 		
 		zeichen=System.in.read();
 		
 			
 		//Einlesen der Information(en)
 									
 		
 		System.out.println("R1 in Ohm: ");
 		
 		//Erzeugung des Eingabeobjektes
 		
 		BufferedReader input=new BufferedReader(
 				    new InputStreamReader(
 				            System.in));
 		
 		str=input.readLine();
 		
 		
 		r1=Double.parseDouble(str);
 		
 		
 		System.out.println("R2 in Ohm: ");
 		
 		str=input.readLine();
 		
 		r2=Double.parseDouble(str);
 		
 		
 		if (zeichen == 'P')
 		
 		{
 				
 			ergebnis=(r1*r2)/(r1+r2);
 			System.out.println("Der Gesamtwert der Parallelschaltung ist "+ergebnis+ " Ohm");
 			System.out.println("Programmende Widerstand");
 			
 			
 		}
 		
 		
 		else
 		
 		{
 			ergebnis=(r1+r2);
 			System.out.println("Der Gesamtwert der Reihenschaltung ist "+ergebnis+ "Ohm");
 			System.out.println("Programmende Widerstand");
 			
 		}
 				
 	}
 			
 	
 }
 

dieta

Top Contributor
Strings darf man nicht mit "==" vergleichen. Das musst du mit dar Methode String.equals(anderer String) machen:
Code:
if(zeichen.equals("R"))
{
    //Tu was
}
else
{
    //Tu was anderes
}
 
R

Rabbit2001

Gast
Vielen Dank,

es scheint zu funktionieren... aber gibt es noch eine andere Möglichkeit als mit dem "equals-Befehl"? Denn das haben wir noch nicht durchgenommen... :bahnhof:

Muss ich das "P" und das "R" denn als String einlesen? Es ist doch nur ein Zeichen und keine Zeichenkette. Kann ich das nicht mit dem Variablentyp "Char" irgendwie machen?

Sorry vielleicht für meine etwas dummen Fragen, aber bin noch absoluter Neuling... :?
 
G

Guest

Gast
Rabbit2001 hat gesagt.:
Vielen Dank,

es scheint zu funktionieren... aber gibt es noch eine andere Möglichkeit als mit dem "equals-Befehl"? Denn das haben wir noch nicht durchgenommen... :bahnhof:

Muss ich das "P" und das "R" denn als String einlesen? Es ist doch nur ein Zeichen und keine Zeichenkette. Kann ich das nicht mit dem Variablentyp "Char" irgendwie machen?

Sorry vielleicht für meine etwas dummen Fragen, aber bin noch absoluter Neuling... :?

Ja kannst du! :D

Wenn du nur ein Zeichen hast kannst du mit char arbeiten und die kannst du dann mit == vergleichen :cool:
 
R

Rabbit2001

Gast
Hier mein neuer Code:

Code:
import java.io.*;
 
 public class Widerstand
 
 {
 		
 	public static void main (String args[]) throws IOException
 	{
 		//Variablendeklaration
 		
 		double r1, r2, ergebnis;
 		
 		char p = 'P';
 		char r = 'R';
 		
		
 		String str, zeichen;
 		

 									
 		System.out.println("Widerstands-Schaltung");
 		
 		System.out.println("(P)arallel- oder (R)eihenschaltung?");
 		
 		//Erzeugung des Eingabeobjektes
 		
 		BufferedReader input=new BufferedReader(
 								new InputStreamReader(
 									System.in));
 		
 		
 		zeichen=input.readLine();
 		
 			
 		//Einlesen der Information(en)
 									
 		
 		System.out.println("R1 in Ohm: ");
 		
 
 		
 		
 
 		str=input.readLine();
 		
 		
 		r1=Double.parseDouble(str);
 		
 		
 		System.out.println("R2 in Ohm: ");
 		
 		str=input.readLine();
 		
 		r2=Double.parseDouble(str);
 		
 		
 		if(zeichen.equals("P"))
 		
 		{
 				
 			ergebnis=(r1*r2)/(r1+r2);
 			System.out.println("Der Gesamtwert der Parallelschaltung ist "+ergebnis+ " Ohm");
 			System.out.println("Programmende Widerstand");
 			
 			
 		}
 		
 		
 		if(zeichen.equals("R"))
 		
 		{
 			ergebnis=(r1+r2);
 			System.out.println("Der Gesamtwert der Reihenschaltung ist "+ergebnis+ " Ohm");
 			System.out.println("Programmende Widerstand");
 			
 		}
 				
 	}
 			
 	
 }
 
R

Rabbit2001

Gast
Danke! Aber warum findet er Integer, wenn ich mit

Code:
 zeichen=System.in.read();


das Zeichen ( "P" oder "R" einlesen will??? Zeichen habe ich als Char deklariert...
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
Wenn du nur ein Zeichen hast kannst du mit char arbeiten und die kannst du dann mit == vergleichen :cool:

Im Prinzip richtig. Aber es könnte Probleme bei Mehrfachem Einlesen geben,
da bei System.in.read() auch die betriebssystemspezifischen Zeichen für
newline (\r\n (= Carriage Return Newline = ASCII 13/10 bei WinDoof-Systemen)
behandelt werden müssen.

readline ist da angenehmer!
 
R

Rabbit2001

Gast
Danke Leroy42! Aber geht es denn nicht doch irgendwie mit System.in.read()??? Wenn ich meine Zeichen mit:
Code:
 zeichen=System.in.read();

einlese? Er findet dann aber immer Integer. Warum liest er es nicht als "Char" ein? zeichen habe ich als Char auch deklariert. Muss da vorher noch irgendwas "parsen"??
 

Leroy42

Top Contributor
Nein, deine erste Programm-Version sollte eigentlich auch funktionieren.

Ein char ist ja nichts anderes als ein kleiner int.

Code:
zeichen = (char) System.in.read();
 
R

Rabbit2001

Gast
Mmmh... komisch, dass er trotzdem abbricht... er liest "p" oder "r" denke ich mal ein und wenn er den ersten Widerstandswert (also r1) abfrägt, dann bricht er ab...
Alles sehr eigenartig...
 
R

Rabbit2001

Gast
Hier die Meldungen die die Konsole ausspuckt:

Widerstands-Schaltung
(P)arallel- oder (R)eihenschaltung?
P
R1 in Ohm:
Exception in thread "main" java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:9
86)
at java.lang.Double.parseDouble(Double.java:201)
at Widerstand.main(Widerstand.java:53)
Press any key to continue...
 

hupfdule

Top Contributor
Die Fehlermeldung ist doch eindeutig. Du versuchst einen leeren String nach Double zu casten. Das klappt natürlich nicht. Das Einlesen klappt offenbar nicht.
 

Leroy42

Top Contributor
Genau was ich vermutet habe: In deiner Eingabe steht

P\r\n123.456\r\n

1. Dein read() liest das P ==> OK!
2. Dein readline() liest \r\n ==> Leerer String ==> Nicht ok
 
R

Rabbit2001

Gast
Das habe ich mir auch schon fast gedacht... also gibt es keinen anderen Weg, als doch das ganze als String einzulesen, oder?
 

Leroy42

Top Contributor
...zumindest keine plattformunabhängigen.

Bei WinDoof-Systemen kannst du schreiben:

Code:
zeichen = System.in.read();
System.in.read();System.in.read(); // newline überlesen

Das dürfte auch auf Macs klappen, da meines Wissens
newlines dort durch "\n\r" kodiert werden.

Auf *x (Linux, ...)-Systemen wird newline mit nur einem Zeichen (\n) codiert,
sodaß es dort nicht klappt.

Ergo: Bleib' lieber bei readline (Es macht aus Sicht des Users ja keinen Unterschied)
 

hupfdule

Top Contributor
Du könntest auch einfach so lange weiter lesen, bis das gelesene Zeichen kein Whitespace-Zeichen ist.
Oder sogar so lange, bis ein verwertbares Zeichen kommt. Ideal ist diese Lösung aber auch nicht. Besser wäre schon, das ganze als String zu lesen.
 
R

Rabbit2001

Gast
Okay vielen Dank für eure Hilfe!!! Hab jetzt alles als String eingelesen und jetzt funktioniert es. Also danke nochmal!!! :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
O Warum ist die Auswahl falsch? Java Basics - Anfänger-Themen 4
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
P Auswahl bei einem Videoverleih limitieren Java Basics - Anfänger-Themen 4
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
Moritz1508 Variablen Erstellung eines simplen Taschenrechners mit +/- - Auswahl Java Basics - Anfänger-Themen 2
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
X Nach switch case weiter mit Auswahl Java Basics - Anfänger-Themen 7
A Grundrechenarten; Aufforderung zur Bestätigung oder Auswahl Java Basics - Anfänger-Themen 25
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
L Speicherort auswahl Java Basics - Anfänger-Themen 4
M JComboBox Auswahl Java Basics - Anfänger-Themen 10
J JComboBox - Auswahl auslesen Java Basics - Anfänger-Themen 2
P Klassen Mehrseitige Auswahl Java Basics - Anfänger-Themen 6
N Auswahl von Arrays durch Stringeingabe Java Basics - Anfänger-Themen 20
K Auswahl der Grafikbibliothek Java Basics - Anfänger-Themen 9
K Zufällige Auswahl innerhalb eines Arrays und Arrays aus JLabel füllen Java Basics - Anfänger-Themen 32
JAVAnnik JList Auswahl Java Basics - Anfänger-Themen 2
D Erste Schritte Auswahl der richtigen tools Java Basics - Anfänger-Themen 7
R Auf auswahl in ner JComboBox reagieren Java Basics - Anfänger-Themen 3
J select-feld auswahl, jsp javascript Java Basics - Anfänger-Themen 2
J Sortieren nach Auswahl Java Basics - Anfänger-Themen 3
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
S FileFilter je nach RadioButton-Auswahl Java Basics - Anfänger-Themen 4
L Auswahl auf welche Art gespeichert werden soll Java Basics - Anfänger-Themen 6
J Taschenrechner Combobox Reaktion auf Auswahl Java Basics - Anfänger-Themen 2
M zufällige auswahl eines Panels aus Grid Layout Java Basics - Anfänger-Themen 3
E Combobox Auswahl überprüfen Java Basics - Anfänger-Themen 7
G Befehl für Ende bei Switch-Auswahl Java Basics - Anfänger-Themen 11
C Bilder Vorschau und Auswahl Java Basics - Anfänger-Themen 4
X JFileChooser Auswahl Java Basics - Anfänger-Themen 4
X Auswahl durch Eingabe von Buchstaben - aber wie? Java Basics - Anfänger-Themen 2
E auswahl von dateien Java Basics - Anfänger-Themen 2
G Auswahl eines Arbeitsverzeichnisses Java Basics - Anfänger-Themen 7
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
D Pfad-Auswahl mit dem JFileChooser Java Basics - Anfänger-Themen 8
I Editor auswahl Java Basics - Anfänger-Themen 6
G Auswahl anhand Wahrscheinlichkeiten Java Basics - Anfänger-Themen 5
J dynamische Auswahl einer überladenen Methode Java Basics - Anfänger-Themen 5
B Auswahl mit switch ? Java Basics - Anfänger-Themen 6
G Schrift-Auswahl-Dialog? Java Basics - Anfänger-Themen 6
P Auswahl von JComboBox abfangen Java Basics - Anfänger-Themen 3
G Auswahl:in File schreiben, oder System.out.print Java Basics - Anfänger-Themen 4
C Auswahl problem Java Basics - Anfänger-Themen 5
W JComboBox- Auswahl schließt komplettes Fenster Java Basics - Anfänger-Themen 10
G Auswahl in DropDown feldern in JSP seiten als Action Aufruf Java Basics - Anfänger-Themen 2
G Filechooser ohne Auswahl für Dateityp Java Basics - Anfänger-Themen 2
D Über Button abhängig von Auswahl 2 versch. Fenster öffnen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben