InputStreamReader + BufferedReader - keine Eingabemöglichkeit

  • Themenstarter Themenstarter Jabazz89
  • Beginndatum Beginndatum
J

Jabazz89

Gast
Hi,

habe folgendes Problem:

Möchte mit dem InputStreamRead + BufferedReader und readLine eine Eingabe ermöglichen.

Mit meinem Code bekomme ich allerdings keine hin, obwohl er meiner Ansicht nach richtig ist.

Ich bekomme auch keine Fehlermeldung, sondern Eclipse hört einfach nicht auf zu kompilieren.

Ist da tatsächlich noch ein fehler versteckt?

Java:
import java.io.*;

public class Test1 {
	
	public static void main (String[] args) throws IOException{
		
		InputStreamReader isr = new InputStreamReader (System.in);
		BufferedReader bfr = new BufferedReader (isr);
		
		System.out.println("Bitte gib deinen Namen ein.");
		String eingabe = bfr.readLine();
		
		System.out.println("Eingabe: "+eingabe);
		
		bfr.close();
	}
}
 
der code stimmt soweit und sollte in wenigen sekunden compiled sein ... warum dein eclipse spackt weis ich nich ...
 
Hat nicht geholfen, aber dann liegt es an Eclipse und nicht am Code. Wenigstens das ist gut zu wissen, muss jetzt nur noch da den Fehler finden.

Bzw. mit einem fehlenden Package oder so kann es nichts zu tun haben, oder?
 
Meinst du so?:

Java:
String eingabe = "Hallo Welt";
		
		System.out.println("Eingabe: "+eingabe);

Dann bekomm ich im Konsolenfenster die richtige Ausgabe:

"Eingabe: Hallo Welt"
 
Mal kurz überlegt... System.in blockt bis zur Eingabe mit Return (\r\n bzw. \n). Readline liest eben genau bis zu einem solchen Zeichen. Was passiert, wenn das Return von System.in gar nicht weitergegeben wird und deswegen gar nicht im BufferedReader landet? Liest sich readLine() dann einen Wolf?
[EDIT]Wenn dem so ist, liegt's natürlich am Code und nicht an Eclipse. 😉[/EDIT]
 
Das mit dem Wolf lesen kann sein, da ich wie gesagt das kompilieren manuell stoppen muss.

Aber ich versteh dich nicht ganz, könntest du das vllt. nochmal in anderen Worten versuchen zu erklären?
 
In System.in kannst du eingeben, so viel du willst. Java bekommt von der Eingabe erst dann etwas mit, nachdem du Return gedrückt hast. Return heisst in diesem Fall NewLine und entsprechen der Zeichenfolge "\r\n" in Windows bzw. "\n" in Linux. Genau auf diese Zeichen wartet auch die "readLine()"-Methode des BufferedReaders. Falls diese Zeichen aber nicht durch System.in an den Reader weitergegeben werden und statdessen von der JVM verschluckt werden, wird "readLine()" niemals das Ende einer Zeile lesen können und endlos warten.
[EDIT]Nachdem ich diese Hypothese nun aufgestellt habe, kannst du sie auch gleich wieder verwerfen... Dein Code funktioniertbei mir. Nach Run oder Debug erscheint in der Konsole: "Bitte gib deinen Namen ein". Dieses kann man aber erst tun, wenn man in die Eclipse-Konsole klickt.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Klingt verständlich, danke dafür.

Jedoch finde ich aufgrund deiner Beschreibung keine Idee, um meinen Code zu berichtigen. 🙁
 
Kann ja leider nicht editieren, sollte mich morgen mal richtig anmelden.

Du hast Recht, man muss in die Konsole klicken und kann dann dort die Eingabe tätigen.

Ich stand schrecklich auf dem Schlauch. Auf diese Idee kam ich natürlich nicht -.-

Dankeschön, hier kann zu! 🙂
 

Zurück
Oben