Snarky Antwort: was Sie falsch machen nur 2 Objekte in Java zu schaffen, etwas zu tun ... wenn Sie suchen, können Sie wahrscheinlich ein paar finden mehr Klassen, die BufferedReader oder ExtendedBufferReader usw. erweitern, und dann kann es sich um echtes Enterprise Java handeln.
Jetzt, dass ich das aus meinem System habe: nützlichere Antwort. System.in ist geschlossen, wenn Sie EOF eingeben, das ist Control-D unter Linux und ich denke, MacOS, und ich denken Control-Z plus unter Windows eingeben. Wenn Sie nach "Enter" suchen möchten (oder genauer, zwei gibt ... ein, um die letzte Zeile zu beenden, und eine, um anzuzeigen, dass Sie fertig sind der http Körper, dann @ dbank Lösung sollte eine praktikable Option mit einem kleinen Fix Ich werde versuchen zu machen, um die! innerhalb der während Prädikat anstelle von! while.
(Edit # 2: realisiert readLine streift den Zeilenumbruch, so dass eine leere Zeile "" anstelle des Zeilenumbruchs wäre, also geht mein Code zu einer anderen Antwort mit dem EOF-Bit als Antwort statt Kommentar.
Edit ... das ist komisch, @dbank hatte antwortete, während ich meine Antwort tippte, und ich hätte aufgehört, hätte ich die EOF-Alternative nicht erwähnt de aus dem Speicher mit dem bearbeiten wollte ich machen:
InputStreamReader instream = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(instream);
line= buffer.readLine();
while (line != null && !line.equals("")){
length = length + line.length();
line= buffer.readLine();
}
, wenn Sie nur die Eingabetaste drücken 'line' wird gleich "" nicht null. Versuchen Sie, 'line! = null 'in'! line.equals ("") '' – StephenButtolph
zu ändern, um weitere Meinungen zu geben (zB über eine for-Schleife), http://codereview.stackexchange.com/questions/44135/ is-it-ok-to-use-während-line-r-readline-null-construct – Foon
realisierte ich letzte Nacht, als ich einschlief: Wofür verwenden Sie Länge? Achtung, wenn Sie cat myfile | Java Ihr Programm und drucken Sie den Wert der Länge aus, dies wird mit dem widersprechen, z. wc wird ausgedruckt, weil Sie keine Zeilenumbrüche zählen. Wenn Sie dies tun müssen, beachten Sie, dass DOS-Dateien "\ r \ n" haben und UNIX-Dateien "\ n" haben und mein ursprünglicher Vorschlag, System.getProperty ("line.separator") zu verwenden, wird wahrscheinlich nicht funktionieren Es gibt keine Garantie, dass Sie nicht z versuchen, eine DOS-Datei unter Linux zu lesen. (Also, hoffentlich ist das nicht das, was du tun willst) – Foon