88 votes

Faire en sorte que la console attende qu'une entrée d'utilisateur se ferme

désolé apparemment question stupide, mais je n'arrive pas à trouver les bons mots-clés pour répondre à cette question. C'est assez simple: j'ai une application console qui après l'exécution de ses tâches, doit donner une rétroaction à l'utilisateur, tels que "l'opération" ou "échec de l'opération" et le détail de l'erreur. La chose est, si je viens de "laisser courir", le message de sortie sera imprimé, mais la console va se fermer peu de temps après, ne laissant pas le temps de lire le message. Aussi loin que je me souvienne, en C++, chaque application console prendra fin avec un "appuyez sur une touche pour quitter" ou quelque chose comme ça. En C#, je peux simuler ce comportement avec un

Console.ReadKey();

Mais comment puis-je le faire en Java? Je suis en utilisant le Scanner de classe, mais étant donné que "entrée" est mon exemple de Scanner:

input.next()
System.exit(0);

"Une touche" de travail, sauf pour le retour, ce qui est un gros problème ici. Les pointeurs?

114voto

x4u Points 7436

En Java, ce serait System.in.read()

28voto

Petr Pudlák Points 25113

J'aimerais ajouter que généralement, vous souhaiterez que le programme n'attende que s'il est connecté à une console. Autrement (comme s'il s'agissait d'un pipeline ), il est inutile d'imprimer un message ou d'attendre. Pour cela, vous pouvez utiliser le Console Java comme ceci:

 import java.io.Console;
// ...
public static void waitForEnter(String message, Object... args) {
    Console c = System.console();
    if (c != null) {
        // printf-like arguments
        if (message != null)
            c.format(message, args);
        c.format("\nPress ENTER to proceed.\n");
        c.readLine();
    }
}
 

12voto

Reverend Gonzo Points 15504

Le problème avec Java à l'entrée de la console, c'est que c'est bufferisé en entrée, et nécessite la touche entrée pour continuer.

Il y a ces deux débats: Détecter et agir sur le clavier les touches de direction en Java et Java clavier d'entrée de l'analyse dans une application console

Le dernier utilisé JLine pour obtenir son problème est résolu.

Personnellement, je ne l'ai pas utilisé.

3voto

dim_voly Points 33

J'ai mis dans ce x4u dit. Eclipse voulais un try catch bloc autour d'elle si je laisse le générer pour moi.

try {
        System.in.read();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Il peut probablement avoir toutes sortes de cloches et de sifflets sur elle mais je pense que pour les débutants qui veulent une fenêtre de ligne de commande de ne pas abandonner ce devrait être bon.

Aussi, je ne sais pas comment c'est (c'est ma première fois, les fichiers jar), mais il ne serait pas exécuter par lui-même, uniquement via un fichier bat.

java.exe -jar mylibrary.jar

Le haut est ce que la chauve-souris fichier dans le même dossier. Semble être une question d'installer.

Eclipse tutoriel est venu à partir de: http://eclipsetutorial.sourceforge.net/index.html

Certains de la réponse vient aussi de l': Oracle Fil

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X