comment écrire un programme java pour gérer l'entrée continue par caractère


J'essaie d'écrire un programme java pour gérer le type continu, caractère par caractère. Fondamentalement, cela signifie qu'il existe une variable de chaîne "input" pour enregistrer le courant tapé dans la chaîne. Donc, si le type est "W", que l'entrée doit être "W" et l'utilisateur conserve le type de "h", l'entrée devrait être "Wh" et ainsi de suite.

Je veux que ce soit caractère par caractère, je pense que cela devrait être une boucle en utilisant le scanner?

OK. Je peux le faire, chaîne par chaîne. mais quand le scanner s'arrête? J'ai essayé:

Tandis que(dans.hasNext()){ Chaîne temp = in.prochain(); si(temp.égal("")){ briser; } }

Mais le scanner ne s'est pas arrêté. La boucle n'a pas cessé. Quelle est la valeur d'entrée de java de la "Enter Return" Clé? Dois-je importer l'écouteur de clavier?

Author: JudyJiang, 2014-04-02

1 answers

Non, un scanner ne fonctionnera pas car il n'accepte la chaîne qu'après avoir appuyé sur ENTER. Vous aurez besoin d'une console non standard ou de créer une interface graphique Swing, utilisez un JTextField auquel un DocumentListener a été ajouté.


Modifier
Pour @tieTYT Il a donné un lien vers cette réponse, qui recommande l'utilisation de la Console pour résoudre ce problème. Mettre son code dans un petit programme:

import java.io.Console;
import java.io.IOException;

public class Test {
   public static void main(String[] args) throws IOException {
      Console cons = System.console();
      if (cons == null) {
         System.out.println("Console is null");
         System.exit(-1);
      } else {
         System.out.println("Enter text, or \"z\" to exit:");
         while (true) {
            char c = (char) cons.reader().read();
            System.out.println("" + c);
            if (c == 'z') {
               System.exit(0);   
            }
         }
      }
   }
}
 1
Author: Hovercraft Full Of Eels, 2017-05-23 12:25:09