J'ai essayé de le faire de cette façon, et il ne fonctionne pas:
try (Reader reader = new BufferedReader(new InputStreamReader(System.in))) {
Stack<Character> stack = new Stack<>();
int i = reader.read();
while(i != -1) {
System.out.println("i = " + i + " = " + (char) i);
stack.push((char) i);
i = reader.read();
}
while(!stack.empty()) {
System.out.print(stack.pop());
}
}
Une fois qu'il pénètre dans la boucle while (i! = -1), il obtient en boucle infinie. J'ai découvert, qu'une fois le programme atteint la fin du texte, le i final = 10. Mais dans la documentation Java, je trouve, qu'il doit retourner une fois Reader.read () atteint la fin du fichier, -1. Cela signifie que je peux terminer la boucle avec while (i! = 10), mais je veux savoir pourquoi il est de retour 10, et non -1. Merci d'avoir répondu
Cela peut être corrigé en vérifiant si i est pas égal à 10 (fin de ligne est ASCII). Lorsque nous fournissons l' entrée comme « abc » et appuyez sur Entrée , nous sommes en fait fournir asc \ n . Si nous vérifions si \ n (10) a été prévu que nous pouvons sortir de la boucle.
while (i != -1 && i != 10) {
}