paka Geschrieben 31. August 2010 Geschrieben 31. August 2010 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 Zitieren
Dragon8 Geschrieben 1. September 2010 Geschrieben 1. September 2010 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) Zitieren
paka Geschrieben 2. September 2010 Autor Geschrieben 2. September 2010 Vielen Dank, das Problem ist damit gelöst. Ich habs it dem Scanner schon gestern morgen getestet, aber ganz vergessen zu posten. LG Paka Zitieren
Empfohlene Beiträge
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.