English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderemos Java Scanner y sus métodos con ejemplos.
La clase PrintWriter del paquete java.io se puede usar para escribir datos de salida en un formato legible (texto).
La clase Scanner del paquete java.util se utiliza para leer datos de entrada de diferentes fuentes (por ejemplo, flujos de entrada, usuarios, archivos, etc.). Vamos a dar un ejemplo.
import java.util.Scanner; class Main { public static void main(String[] args) { //Crear un objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Ingresa el nombre: "); // Recibir entrada desde el teclado String name = input.nextLine(); // Imprimir salida de nombre System.out.println("Mi nombre es " + name); // Cierra el escaneo input.close(); } }
输出结果
Ingresa el nombre: Jack Mi nombre es Jack
En el ejemplo anterior, presta atención a las siguientes líneas
Scanner input = new Scanner(System.in);
Aquí creamos un objeto Scanner llamado input.
El parámetro System.in se utiliza para obtener la entrada desde la entrada estándar. Es como obtener entrada desde el teclado.
Luego, utilizamos el método nextLine() de la clase Scanner para leer una línea de texto del usuario.
Ahora que ya tienes una idea de Scanner, exploremoslo más a fondo.
A partir del ejemplo anterior, podemos ver que primero necesitamos importar el paquete java.util.Scanner, luego podemos usar la clase Scanner.
import java.util.Scanner;
Como se mencionó anteriormente, después de importar el paquete, se puede crear el objeto Scanner.
//Leer entrada desde un flujo de entrada Scanner sc1 = new Scanner(InputStream input); //Leer entrada desde un archivo Scanner sc2 = new Scanner(File file); //Leer entrada desde una cadena Scanner sc3 = new Scanner(String str);
Aquí, creamos objetos de la clase Scanner, que leerán respectivamente desdeInputStream,lectura de entrada de archivos y cadenas.
La clase Scanner de Java proporciona varios métodos que nos permiten leer diferentes tipos de entrada.
Método | Descripción |
---|---|
nextInt() | Leer valor int del usuario |
nextFloat() | Leer valor float del usuario |
nextBoolean() | Leer valor boolean del usuario |
nextLine() | Leer una línea de texto del usuario |
next() | Leer una palabra del usuario |
nextByte() | Leer valor byte del usuario |
nextDouble() | Leer valor double del usuario |
nextShort() | Leer valor short del usuario |
nextLong() | Leer valor long del usuario |
import java.util.Scanner; class Main { public static void main(String[] args) { //Crear objeto scanner Scanner input = new Scanner(System.in); System.out.println("Ingresar un entero: ") //Leer un valor int int data1 = input.nextInt(); System.out.println("Usando nextInt(): ") + data1); input.close(); } }
输出结果
Ingresar un entero: 22 Usando nextInt(): 22
En el ejemplo anterior, usamos el método nextInt() para leer valores enteros.
import java.util.Scanner; class Main { public static void main(String[] args) { //Crear un objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Ingresar valor de precisión doble: ") //Leer valor de precisión doble double value = input.nextDouble(); System.out.println("Usando nextDouble(): ") + value); input.close(); } }
输出结果
Ingresar valor de precisión doble: 33.33 Usando nextDouble(): 33.33
En el ejemplo anterior, usamos el método nextDouble() para leer valores de punto flotante.
import java.util.Scanner; class Main { public static void main(String[] args) { //Crear un objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Ingrese su nombre: "); //Leer toda la palabra String value = input.next(); System.out.println("Usando next(): ") + value); input.close(); } }
输出结果
Ingrese su nombre: Jonny Walker Usando next(): Jonny
En el ejemplo anterior, usamos el método next() para leer una cadena del usuario.
Aquí, proporcionamos el nombre completo. Pero, el método next() solo lee el nombre.
porque el método next() lee la entrada hastaespacioscaracteres. Una vez que encuentra un espacio, devuelve la cadena (sin incluir los espacios).
import java.util.Scanner; class Main { public static void main(String[] args) { //Crear un objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Ingrese su nombre: "); //Leer una línea completa String value = input.nextLine(); System.out.println("Usando nextLine(): "); + value); input.close(); } }
输出结果
Ingrese su nombre: Jonny Walker Usando nextLine(): Jonny Walker
En el primer ejemplo, usamos el método nextLine() para leer una cadena del usuario.
Diferente de next(), el método nextLine() lee toda la línea de entrada, incluyendo los espacios. El método termina cuando encuentra el siguiente carácter de nueva línea \n.
El programa de escaneo de Java se puede usar para leer enteros grandes y números decimales grandes.
nextBigInteger() - Leer valores de enteros grandes del usuario
nextBigDecimal() - Leer valores de números decimales grandes del usuario
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main { public static void main(String[] args) { //Crear un objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Ingrese un entero grande: "); //Leer un entero grande BigInteger value1 input.nextBigInteger(); System.out.println("Usando nextBigInteger(): "); + value1); System.out.print("Ingrese un número decimal grande: "); //Leer un número decimal grande BigDecimal value2 input.nextBigDecimal(); System.out.println("Using nextBigDecimal(): ") + value2); input.close(); } }
输出结果
输入一个大整数: 987654321 使用 nextBigInteger(): 987654321 输入一个大十进制: 9.55555 使用 nextBigDecimal(): 9.55555
在上面的示例中,我们使用java.math.BigInteger和java.math.BigDecimal包分别读取BigInteger和BigDecimal。
扫描器类读取整个行,并将该行划分为记号。令牌是对Java编译器有一定意义的小元素。例如
假设有一个输入字符串:
He is 22
在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:“ He ”,“ is ”和“ 22 ”。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。
注意:默认情况下,空格用于划分标记。