Comment lire les entrées de la console en utilisant la classe Scanner
? Quelque chose comme ça:
System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code
En gros, tout ce que je veux, c'est que le scanner lise une entrée pour le nom d'utilisateur et l'assigne à une variable String
.
Un exemple simple illustrant le fonctionnement de Java.util.Scanner
consisterait à lire un entier entier dans 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, j'utiliserais probablement 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 souhaitez davantage de contrôle sur l'entrée, ou simplement valider la variable username
.
Vous trouverez plus d'informations sur leur implémentation dans le Documentation d'API pour Java.util.Scanner
Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();
Lecture des données depuis la console
BufferedReader
est synchronisé, de sorte que les opérations de lecture sur un BufferedReader peuvent être effectuées en toute sécurité à partir de plusieurs threads. La taille de la mémoire tampon peut être spécifiée ou la taille par défaut ( 8192 ) peut être utilisée. La valeur par défaut est suffisante pour la plupart des cas.
readLine ()" lit uniquement les données ligne par ligne à partir du flux ou de la source. Une ligne est considérée comme terminée par l'un quelconque de ceux-ci:\n,\r (ou)\r\n
Scanner
rompt sa saisie en jetons à l'aide d'un motif de délimiteur, qui correspond par défaut aux espaces (\ s) et est reconnu par Character.isWhitespace
=.
" Jusqu'à ce que l'utilisateur saisisse des données, l'opération de numérisation peut se bloquer en attendant sa saisie. " Utilisez Scanner ( BUFFER_SIZE = 1024 ) si vous souhaitez analyser un type spécifique de jeton à partir d'un flux. " A Cependant, le scanner n’est pas sécuritaire pour les threads. Il doit être synchronisé de manière externe.
next () "Recherche et retourne le prochain jeton complet de ce scanner. nextInt () "Analyse le prochain jeton 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);
}
_
_Reader Input: Output:
Yash 777 Line1 = Yash 777
7 Line1 = 7
Scanner Input: Output:
Yash 777 token1 = Yash
token2 = 777
_
Il y a un problème avec la méthode input.nextInt () - elle ne lit que la valeur int.
Ainsi, lors de la lecture de la ligne suivante à l’aide de input.nextLine (), vous recevez "\ n", c’est-à-dire le Enter clé. Donc, pour ignorer cela, vous devez ajouter input.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();
Il existe plusieurs façons d'obtenir les commentaires de l'utilisateur. Ici, dans ce programme, nous prendrons la classe Scanner pour accomplir la tâche. Cette classe Scanner appartient à 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 d'importation doit obligatoirement figurer dans la première ligne du programme Java, et nous procédons 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 nouvel objet scanner sous la forme "in". Maintenant, nous utilisons l'une de ses méthodes, c'est "next". La méthode "next" obtient la chaîne de texte saisie par l'utilisateur sur le clavier.
Ici, j'utilise in.nextLine();
pour obtenir la chaîne dans laquelle 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);
}
}
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);
}
}
Vous pouvez créer un programme simple pour demander le nom de l'utilisateur et imprimer toutes les entrées utilisées pour la réponse.
Vous pouvez également demander à l'utilisateur de saisir deux nombres. Vous pouvez ensuite ajouter, multiplier, soustraire ou diviser ces chiffres et imprimer les réponses pour les entrées utilisateur, comme pour 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 comment cela diffère: input.next();
, i = input.nextInt();
, d = input.nextDouble();
Selon String, int et a double varient de la même manière pour le reste. N'oubliez pas la déclaration d'importation en haut de votre code.
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);
}
}
Lorsque l'utilisateur entre son username
, vérifiez également si l'entrée est 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);
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);
}
}
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();
}
}
Pour lire une entrée:
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
Pour lire les entrées 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());
}
Vous pouvez passer ce code:
Scanner obj= new Scanner(System.in);
String s = obj.nextLine();
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.
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 de scanner.
Nous passons ici la référence InputStream
qui n’est autre qu’un System.In
. Ici, il ouvre le InputStream
Pipe pour l’entrée console.
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 lire à partir de la console.
Vous pouvez utiliser la classe Scanner en Java.
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println("String: " + s);