Zum Inhalt springen

readInt erwartet weitere Eingabe readFloat klappt nicht


paka

Empfohlene Beiträge

Hallo,

ich versuche mich gerade nach Jahren mal wieder in Java einzuarbeiten. Dabei bin ich auf ein (Anfänger)problem gestoßen, und trotz langem googeln und wühlen in Büchern (online und auf Papier ) finde ich nichts, was mir weiterhilft.

Ich erzeuge in dem Programm 2 Instanzen einer Klasse. Das Problem tritt im Konstruktor auf. Hier der (gekürzte ) Code, bei dem das Problem auftritt:


DataInputStream dis = new DataInputStream(System.in) ;

System.out.println(" gib das Alter ein") ;

this.alter = dis.readInt() ;                       //1. Hier wird ein weiteres Enter nötig

System.out.println("Gib die Zahnlaenge ein ") ;

this.zahnlaenge = dis.readFloat() ;	    //2. der Wert wird gar nicht übernommen	

this.name = name ;

System.out.println("mein Name ist "+this.name+" und meine Zaehne haben die Laenge "+this.zahnlaenge) ;

An der 1. Stelle wechselt der Curser, nach der Eingabe der Zahl, zwar die Zeile, die Ausgabe 'Gib die... ein' kommt aber erst nach einem weiteren Enter. An der 2. Stelle, wird die Zahl nicht übernommen, bzw der anschließend angezeigte Wert hat nichts mit der Eingabe zu tun. Ich erzeuge 2 Instanzen hintereinander. Wenn ich die 2. erzeuge, wird die Eingabe des Namens nicht gefordert. Hier steht wohl noch ein 2. Enter im Puffer (irgendwie so war das, aber genau weiß ich das auchnicht mehr ). Unten ist die Stelle, an der der Name gefragt, und anschließend der Konstruktor aufgerufen wird. (Ja ja die Objekte sind Meerschweinchen, ich hab halt Kinder ;) )

System.out.println(" gib den Namen Meerschweinschens ein ") ;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ;

name = br.readLine() ;		// der Name wird beim 2. Aufruf nicht Gelesen, und ein leerer String ausgegeben

return  new Meerschweinchen(name) ;

Ich denke es ist nichts wirklich kompliziertes, aber alles wühlen im Netz und Buch hat halt nix geholfen.

LG

Paka

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke mal, das liegt vor allem daran, dass der DataInputStream für deine Aufgabe nicht die richtige Klasse ist. Der DataInputStream ist dazu gedacht Daten wieder einzulesen die mit dem DataOutputStream gespeichert wurden.

Wenn du zb mal den DataOutputStream benutzt und verschiedene Datentypen in eine Datei schreibst, wirst du beim anschauen der Datei erkennen, dass diese nicht in Klartext abgespeichert wurden. Dementsprechend wirst du es also aber auch nicht schaffen, den DataInputStream dazu zu überreden deine Klartexteingaben richtig zu interpretieren.

Ich würde dir empfehlen für die Aufgabe die Scanner Klasse zu benutzen. Der musst du auch nur den passenden InputStream übergeben, in diesem Fall also System.in, und die Klasse bietet dann auch ähnliche Methoden wie der DataInputStream.

Scanner (Java Platform SE 6)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...