Comment puis-je lire l'entrée de la console en utilisant la classe Scanner en Java?

Comment puis-je lire l'entrée de la console en utilisant la classe Scanner? Quelque chose comme ceci:

System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code

Fondamentalement, tout ce que je veux, c'est que le scanner Lise une entrée pour le nom d'utilisateur et attribue l'entrée à une variable String.

173
demandé sur Peter Mortensen 2012-08-08 23:13:07

15 réponses

Un exemple simple pour illustrer comment java.util.Scanner fonctionne serait de lire un seul entier à partir de System.in. C'est vraiment très simple.

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

Pour récupérer un nom d'utilisateur, je serais probablement utiliser sc.nextLine().

System.out.println("Enter your username: ");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.println("Your username is " + username);

Vous pouvez également utiliser next(String pattern) si vous voulez plus de contrôle sur l'entrée, ou tout simplement de valider le username variable.

Vous trouverez plus d'informations sur leur implémentation dans la Documentation de l'API pour java.util.Scanner

270
répondu Rune Vikestad 2015-04-05 02:53:07
Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();
29
répondu Matt_Bro 2012-08-08 19:15:37

Lecture Des Données De La Console

  • BufferedReader est synchronisé, donc les opérations de lecture sur un BufferedReader peuvent être effectuées en toute sécurité à partir de plusieurs threads. La taille du tampon peut être spécifiée, ou la taille par défaut(8192) peut être utilisé. La valeur par défaut est assez grande pour la plupart des besoins.

    ReadLine() " lit simplement les données ligne par ligne à partir du flux ou de la source. Une ligne est considérée comme terminée par l'une de ces: \n, \r (ou) \r\n

  • Scanner décompose son entrée en jetons à l'aide d'un motif de délimiteur, qui correspond par défaut aux espaces (\s) et il est reconnu par Character.isWhitespace.

    " Jusqu'à ce que l'utilisateur entre des données, l'opération de numérisation peut bloquer, en attente d'entrée. " utilisez Scanner ( BUFFER_SIZE = 1024) si vous souhaitez analyser un type spécifique de jeton à partir d'un flux. " Un scanner n'est cependant pas thread-safe. Il doit être synchronisé extérieurement.

    Next () " trouve et renvoie le jeton complet suivant de ce scanner. nextInt () " analyse le jeton suivant de l'entrée en tant qu'int.

Code

String name = null;
int number;

java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
name = in.readLine(); // If the user has not entered anything, assume the default value.
number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it.
System.out.println("Name " + name + "\t number " + number);

java.util.Scanner sc = new Scanner(System.in).useDelimiter("\\s");
name = sc.next();  // It will not leave until the user enters data.
number = sc.nextInt(); // We can read specific data.
System.out.println("Name " + name + "\t number " + number);

// The Console class is not working in the IDE as expected.
java.io.Console cnsl = System.console();
if (cnsl != null) {
    // Read a line from the user input. The cursor blinks after the specified input.
    name = cnsl.readLine("Name: ");
    System.out.println("Name entered: " + name);
}

Entrées et sorties du flux

Reader Input:     Output:
Yash 777          Line1 = Yash 777
     7            Line1 = 7

Scanner Input:    Output:
Yash 777          token1 = Yash
                  token2 = 777
14
répondu Yash 2018-03-21 17:55:11

, Il existe plusieurs façons d'obtenir de l'entrée de l'utilisateur. Ici, dans ce programme, nous allons prendre la classe Scanner pour accomplir la tâche. Cette classe de Scanner est sous java.util, d'où la première ligne du programme est import java.util.Scanner; qui permet à L'utilisateur de lire des valeurs de différents types en Java. La ligne d'instruction import devrait être dans la première ligne du programme java, et nous continuons plus loin pour le code.

in.nextInt(); // It just reads the numbers

in.nextLine(); // It get the String which user enters

Pour accéder aux méthodes de la classe Scanner, créez un nouveau scanner l'objet comme "dans". Maintenant, nous utilisons l'un de ses méthode, qui est "à côté". La méthode "next" obtient la chaîne de texte qu'un utilisateur entre sur le clavier.

Ici, j'utilise in.nextLine(); pour obtenir la chaîne que l'utilisateur entre.

import java.util.Scanner;

class GetInputFromUser {
    public static void main(String args[]) {
        int a;
        float b;
        String s;

        Scanner in = new Scanner(System.in);
        System.out.println("Enter a string");
        s = in.nextLine();
        System.out.println("You entered string " + s);

        System.out.println("Enter an integer");
        a = in.nextInt();
        System.out.println("You entered integer " + a);

        System.out.println("Enter a float");
        b = in.nextFloat();
        System.out.println("You entered float " + b);
    }
}
9
répondu Jaimin Patel 2018-03-21 17:57:34
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] arguments){
        Scanner input = new Scanner(System.in);

        String username;
        double age;
        String gender;
        String marital_status;
        int telephone_number;

        // Allows a person to enter his/her name   
        Scanner one = new Scanner(System.in);
        System.out.println("Enter Name:" );  
        username = one.next();
        System.out.println("Name accepted " + username);

        // Allows a person to enter his/her age   
        Scanner two = new Scanner(System.in);
        System.out.println("Enter Age:" );  
        age = two.nextDouble();
        System.out.println("Age accepted " + age);

        // Allows a person to enter his/her gender  
        Scanner three = new Scanner(System.in);
        System.out.println("Enter Gender:" );  
        gender = three.next();
        System.out.println("Gender accepted " + gender);

        // Allows a person to enter his/her marital status
        Scanner four = new Scanner(System.in);
        System.out.println("Enter Marital status:" );  
        marital_status = four.next();
        System.out.println("Marital status accepted " + marital_status);

        // Allows a person to enter his/her telephone number
        Scanner five = new Scanner(System.in);
        System.out.println("Enter Telephone number:" );  
        telephone_number = five.nextInt();
        System.out.println("Telephone number accepted " + telephone_number);
    }
}
8
répondu Benjamin Manford 2015-04-05 03:07:24

Vous pouvez créer un programme simple pour demander le nom de l'utilisateur et imprimer quelles que soient les entrées d'utilisation de la réponse.

, Ou demander à l'utilisateur d'entrer deux nombres, et vous pouvez ajouter, multiplier, soustraire ou diviser ces chiffres et d'imprimer les réponses pour les entrées de l'utilisateur tout comme le comportement d'une calculatrice.

Vous avez donc besoin de la classe Scanner. Vous devez import java.util.Scanner;, et dans le code, vous devez utiliser:

Scanner input = new Scanner(System.in);

input est un nom de variable.

Scanner input = new Scanner(System.in);

System.out.println("Please enter your name: ");
s = input.next(); // Getting a String value

System.out.println("Please enter your age: ");
i = input.nextInt(); // Getting an integer

System.out.println("Please enter your salary: ");
d = input.nextDouble(); // Getting a double

Voyez en quoi cela diffère: input.next();, i = input.nextInt();, d = input.nextDouble();

Selon une chaîne, int et un double varient de la même manière pour le reste. N'oubliez pas la déclaration d'importation en haut de votre code.

5
répondu user3598655 2018-03-21 17:45:30

Un exemple simple:

import java.util.Scanner;

public class Example
{
    public static void main(String[] args)
    {
        int number1, number2, sum;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter First multiple");
        number1 = input.nextInt();

        System.out.println("Enter second multiple");
        number2 = input.nextInt();

        sum = number1 * number2;

        System.out.printf("The product of both number is %d", sum);
    }
}
4
répondu Clark 2018-03-21 17:43:00

Il y a un problème avec l'entrée.méthode nextInt () - elle ne lit que la valeur int.

Donc, lors de la lecture de la ligne suivante en utilisant input.nextLine() vous recevez "\n", c'est à dire la Entrer clé. Donc pour sauter cela, vous devez ajouter l'entrée.nextLine().

Essayez comme ça:

 System.out.print("Insert a number: ");
 int number = input.nextInt();
 input.nextLine(); // This line you have to add (it consumes the \n character)
 System.out.print("Text1: ");
 String text1 = input.nextLine();
 System.out.print("Text2: ");
 String text2 = input.nextLine();
4
répondu Vaibhav Bhalla 2018-03-21 18:03:40
  1. Pour lire l'entrée:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    
  2. Pour lire l'entrée lorsque vous appelez une méthode avec des arguments/paramètres:

    if (args.length != 2) {
        System.err.println("Utilizare: java Grep <fisier> <cuvant>");
        System.exit(1);
    }
    try {
        grep(args[0], args[1]);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    
2
répondu MyUserQuestion 2015-04-04 12:16:59
import java.util.*;

class Ss
{
    int id, salary;
    String name;

   void Ss(int id, int salary, String name)
    {
        this.id = id;
        this.salary = salary;
        this.name = name;
    }

    void display()
    {
        System.out.println("The id of employee:" + id);
        System.out.println("The name of employye:" + name);
        System.out.println("The salary of employee:" + salary);
    }
}

class employee
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);

        Ss s = new Ss(sc.nextInt(), sc.nextInt(), sc.nextLine());
        s.display();
    }
}
2
répondu sunil 2018-01-21 22:57:33

Lorsque l'utilisateur entre son username, vérifiez également l'entrée valide.

java.util.Scanner input = new java.util.Scanner(System.in);
String userName;
final int validLength = 6; // This is the valid length of an user name

System.out.print("Please enter the username: ");
userName = input.nextLine();

while(userName.length() < validLength) {

    // If the user enters less than validLength characters
    // ask for entering again
    System.out.println(
        "\nUsername needs to be " + validLength + " character long");

    System.out.print("\nPlease enter the username again: ");
    userName = input.nextLine();
}

System.out.println("Username is: " + userName);
2
répondu Anirban Nag 'tintinmj' 2018-03-16 22:18:00

Voici la classe complète qui effectue l'opération requise:

import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        final int valid = 6;

        Scanner one = new Scanner(System.in);
        System.out.println("Enter your username: ");
        String s = one.nextLine();

        if (s.length() < valid) {
            System.out.println("Enter a valid username");
            System.out.println(
                "User name must contain " + valid + " characters");
            System.out.println("Enter again: ");
            s = one.nextLine();
        }

        System.out.println("Username accepted: " + s);

        Scanner two = new Scanner(System.in);
        System.out.println("Enter your age: ");
        int a = two.nextInt();
        System.out.println("Age accepted: " + a);

        Scanner three = new Scanner(System.in);
        System.out.println("Enter your sex: ");
        String sex = three.nextLine();
        System.out.println("Sex accepted: " + sex);
    }
}
2
répondu Prasenjit Chatterjee 2018-03-21 17:48:19

Vous pouvez faire circuler ce code:

Scanner obj= new Scanner(System.in);
String s = obj.nextLine();
1
répondu TARIK BILLAH 2018-03-21 18:01:13

Vous pouvez utiliser la classe Scanner en Java

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println("String: " + s);
0
répondu Yasir Shabbir Choudhary 2017-07-07 07:02:52

Il existe un moyen simple de lire à partir de la console.

Veuillez trouver le code ci-dessous:

import java.util.Scanner;

    public class ScannerDemo {

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);

            // Reading of Integer
            int number = sc.nextInt();

            // Reading of String
            String str = sc.next();
        }
    }

Pour une compréhension détaillée, veuillez vous référer aux documents ci-dessous.

Doc

Parlons maintenant de la compréhension détaillée du fonctionnement de la classe Scanner:

public Scanner(InputStream source) {
    this(new InputStreamReader(source), WHITESPACE_PATTERN);
}

C'est le constructeur pour créer l'instance du Scanner.

Nous passons ici la référence InputStream qui n'est rien d'autre qu'un System.In. Ici, il ouvre le tuyau InputStream pour la console entrée.

public InputStreamReader(InputStream in) {
    super(in);
    try {
        sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object
    }
    catch (UnsupportedEncodingException e) {
        // The default encoding should always be available
        throw new Error(e);
    }
}

En passant le System.in ce code ouvrira le socket pour la lecture à partir de la console.

0
répondu Hasnain Ali Bohra 2018-03-21 18:00:53