Je dois lire l'entrée de la console et la sortie dans un ordre différent en utilisant InputStream

FilipKovac:

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

Jason:

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) {

}

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=349704&siteId=1
conseillé
Classement