176 votes

Java : Comment obtenir une entrée de System.console()

J'essaie d'utiliser la classe Console pour obtenir des données de l'utilisateur, mais un objet nul est renvoyé lorsque j'appelle la classe Console. System.console() . Dois-je modifier quelque chose avant d'utiliser System.console ?

Console co=System.console();
System.out.println(co);
try{
    String s=co.readLine();
}

1 votes

Est-ce que c'est pour Android ? (je devine d'après votre nom d'utilisateur)

0 votes

Utilisez-vous eclipse pour démarrer votre programme ? Essayez de lancer votre programme sans eclipse en utilisant java.exe.

5 votes

Jetez un coup d'œil au projet de McDowell "AbstractingTheJavaConsole" : illegalargumentexception.googlecode.com/svn/trunk/code/java/

5voto

Essayez ceci. J'espère que cela vous aidera.

    String cls0;
    String cls1;

    Scanner in = new Scanner(System.in);  
    System.out.println("Enter a string");  
    cls0 = in.nextLine();  

    System.out.println("Enter a string");  
    cls1 = in.nextLine();

3voto

aliteralmind Points 6583

Les prises suivantes La réponse de athspk et le transforme en un programme qui boucle continuellement jusqu'à ce que l'utilisateur tape "exit". J'ai également écrit un réponse complémentaire où j'ai pris ce code et l'ai rendu testable.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class LoopingConsoleInputExample {

   public static final String EXIT_COMMAND = "exit";

   public static void main(final String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      System.out.println("Enter some text, or '" + EXIT_COMMAND + "' to quit");

      while (true) {

         System.out.print("> ");
         String input = br.readLine();
         System.out.println(input);

         if (input.length() == EXIT_COMMAND.length() && input.toLowerCase().equals(EXIT_COMMAND)) {
            System.out.println("Exiting.");
            return;
         }

         System.out.println("...response goes here...");
      }
   }
}

Exemple de sortie :

Enter some text, or 'exit' to quit
> one
one
...response goes here...
> two
two
...response goes here...
> three
three
...response goes here...
> exit
exit
Exiting.

3voto

siordache Points 84

J'ai écrit le Texte-IO qui permet de résoudre le problème de la nullité de System.console() lors de l'exécution d'une application à partir d'un IDE.

Elle introduit une couche d'abstraction similaire à celle proposée par McDowell . Si System.console() renvoie null, la bibliothèque passe à une console basée sur Swing.

En outre, Text-IO dispose d'une série de fonctionnalités utiles :

  • prend en charge la lecture de valeurs avec différents types de données.
  • permet de masquer l'entrée lors de la lecture de données sensibles.
  • permet de sélectionner une valeur dans une liste.
  • permet de spécifier des contraintes sur les valeurs d'entrée (modèles de format, plages de valeurs, contraintes de longueur, etc.)

Exemple d'utilisation :

TextIO textIO = TextIoFactory.getTextIO();

String user = textIO.newStringInputReader()
        .withDefaultValue("admin")
        .read("Username");

String password = textIO.newStringInputReader()
        .withMinLength(6)
        .withInputMasking(true)
        .read("Password");

int age = textIO.newIntInputReader()
        .withMinVal(13)
        .read("Age");

Month month = textIO.newEnumInputReader(Month.class)
        .read("What month were you born in?");

textIO.getTextTerminal().println("User " + user + " is " + age + " years old, " +
        "was born in " + month + " and has the password " + password + ".");

En cette image vous pouvez voir le code ci-dessus s'exécuter dans une console basée sur Swing.

2voto

keuleJ Points 977

Utilisez-vous eclipse pour démarrer votre programme ? Essayez de lancer votre programme sans eclipse en utilisant java.exe.

0voto

Sarwar Erfan Points 11946

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