Zum Inhalt springen

readInt erwartet weitere Eingabe readFloat klappt nicht


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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)

Geschrieben

Vielen Dank, das Problem ist damit gelöst.

Ich habs it dem Scanner schon gestern morgen getestet, aber ganz vergessen zu posten.

LG

Paka

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...