réponse Snarky: ce que vous faites mal crée seulement 2 objets Java pour faire quelque chose ... si vous cherchez, vous pouvez probablement trouver quelques plus de classes qui étendent BufferedReader ou ExtendedBufferReader etc, et puis il peut être vrai Enterprise Java.
Maintenant que je l'ai sorti de mon système: réponse plus utile. System.in est fermé lorsque vous entrez EOF, qui est Control-D sous Linux et je pense que MacOS, et je pense Control-Z plus entrer sous Windows. Si vous voulez vérifier pour entrer (ou plus précisément, deux entre ... un pour terminer la dernière ligne et un pour indiquer que vous avez terminé, qui est essentiellement la façon dont http gère la détermination lorsque les en-têtes http sont terminés et il est temps pour le corps de http, alors la solution de @dbank devrait être une option viable avec une correction mineure que je vais essayer de faire pour déplacer le! dedans du prédicat while au lieu de! while
(Edit # 2: réalisé readLine supprime la nouvelle ligne, donc une ligne vide remplacerait la nouvelle ligne par "", et maintenant mon code passe à une autre réponse avec le bit EOF comme réponse à la place du commentaire
Éditez ... c'est bizarre, @dbank avait J'ai répondu pendant que je tapais ma réponse, et je me serais arrêté si je n'avais pas mentionné l'alternative EOF. de la mémoire avec l'édition que j'allait faire:
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();
}
lorsque vous n'appuyez sur Entrée 'sera égal coût média "" non nul. essayez de changer 'line! = null' à'! line.equals ("") ' – StephenButtolph
Aussi, juste pour fournir d'autres opinions (par exemple en utilisant une boucle for), http://codereview.stackexchange.com/questions/44135/ is-it-ok-to-use-while-line-r-readline-null-construct – Foon
J'ai réalisé hier soir que je m'endormais: pour quoi utilisez-vous la longueur? NB que si vous deviez faire un chat myfile | Java yourprogram et imprimer la valeur de la longueur, ce sera en désaccord avec ce que, par exemple. wc imprime parce que vous ne comptez pas les nouvelles lignes. Si vous avez besoin de faire cela, notez que les fichiers DOS auront "\ r \ n" et les fichiers UNIX auront "\ n" et ma suggestion originale d'utiliser System.getProperty ("line.separator") ne fonctionnera probablement pas parce que il n'y a aucune garantie que vous n'êtes pas essayer de lire un fichier DOS sous Linux. (Donc, j'espère que ce n'est pas ce que vous voulez faire) – Foon