English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Java Conjuntos Map

Java Conjuntos Set

Java Entrada/Salida (I/O)

Java Reader/Writer

Otras temáticas de Java

Java Scanner 类

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.

Ejemplo1:Usar el escaneo para leer una línea de texto

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.

Importar la clase Scanner

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;

Crear un objeto de escaneo con Java

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.

Métodos de entrada del scanner de Java

La clase Scanner de Java proporciona varios métodos que nos permiten leer diferentes tipos de entrada.

MétodoDescripció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

Ejemplo2:Método nextInt() del scanner de Java

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.

Ejemplo3:Método nextDouble() del scanner de Java

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.

Ejemplo4:Método next() del scanner de Java

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).

Ejemplo5: Método nextLine() del escaneo de Java

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.

Escaneo de BigInteger y BigDecimal en Java

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

Ejemplo4: Leer BigInteger y BigDecimal

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扫描器的工作方式

扫描器类读取整个行,并将该行划分为记号。令牌是对Java编译器有一定意义的小元素。例如

假设有一个输入字符串:

He is 22

在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:“ He ”,“ is ”和“ 22 ”。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。

注意:默认情况下,空格用于划分标记。