[Notas del estudio de Java] el uso de la clase Scanner

1. Descripción general de la clase de escáner

Después de que se utiliza JDK5 para obtener la entrada del teclado del usuario

2. El método de construcción de la clase Scanner.

  • Escáner público (fuente InputStream): construya un nuevo escáner, el valor que genera se escanea a partir del flujo de entrada especificado.

Para un uso específico, consulte el siguiente código:

package com.hw.scanner;

import java.util.Scanner;

/**
 * Scanner类概述
 * JDK5以后用于获取用户的键盘输入
 * 
 * Scanner类的构造方法
 * public Scanner(InputStream source):构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
 * 
 * System类下有一个静态的字段
 * 		public static final InputStream in;标准的输入流,对应着键盘录入。
 * 		InputStream input = System.in;
 * 
 * @author HW
 * 
 */
public class ScannerDemo {
	public static void main(String[] args) {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个整数:");
		int x = sc.nextInt();
		System.out.println("x=" + x);
	}
}

Los resultados de la operación son los siguientes: 

请输入一个整数:10
x=10

 3. Métodos de miembros comunes de la clase Scanner

El formato básico es el siguiente:

  • public boolean hasNextXxx (): determina si se trata de un determinado tipo de elemento, donde Xxx puede ser int, double, etc. Si necesita determinar si debe incluir la siguiente cadena, puede omitir Xxx
  • public Xxx nextXxx (): Obtiene el elemento

Tome el tipo int como ejemplo:

  • public boolean hasNextInt (): determina si hay un elemento de tipo int
  • public int nextInt (): Obtiene un valor de tipo int 
  • public String nextLine (): Obtiene un valor de tipo String

El uso específico de hasNextInt () se refiere al siguiente código: 

package com.hw.scanner;

import java.util.Scanner;

/**
 * @author HW
 *
 */
public class ScannerDemo2 {
	public static void main(String[] args) {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个整数:");

		if (sc.hasNextInt()) {
			int x = sc.nextInt();
			System.out.println("你输入的整数为:" + x);
		} else {
			System.out.println("你输入的数据不是整数!");
		}
	}
}

Los resultados de la operación son los siguientes:

请输入一个整数:10
你输入的整数为:10

Veamos un requisito: primero obtenga el valor de int type y luego obtenga el valor de String type, el código es el siguiente:

/**
 * 先获取int类型的值,再获取String类型的值
 */
private static void method4() {
	// 创建Scanner对象
	Scanner sc = new Scanner(System.in);

	// 先获取int类型的值,再获取String类型的值
	System.out.print("请输入一个整数:");
	int x = sc.nextInt();

	System.out.print("请输入一个字符串:");
	String str = sc.nextLine();

	System.out.println("x=" + x + " str=" + str);
	}

Habrá problemas, como sigue:

请输入一个整数:10
请输入一个字符串:x=10 str=

La razón principal: el problema con el salto de línea.

Solución:

  • La primera forma: obtenga un valor primero y luego cree un nuevo objeto de entrada de teclado para obtener la cadena.
  • La segunda forma: obtenga todos los datos de acuerdo con la cadena primero, y luego lo que desee dependerá de la conversión correspondiente.

el código se muestra a continuación:

package com.hw.scanner;

import java.util.Scanner;

/**
 * Scanner类的常用方法 
 * public int nextInt():获取一个int类型的值 
 * public String nextLine():获取一个String类型的值
 * 
 * @author HW
 * 
 */
public class ScannerDemo3 {
	public static void main(String[] args) {
		// method1();
		// method2();
		// method3();
		method4();
	}

	/**
	 * 先获取int类型的值,再获取String类型的值
	 * 
	 * 会出现问题,如下:
	 * 请输入一个整数:10
	 * 请输入一个字符串:
	 * x=10 str=
	 * 
	 * 主要原因:换行符号的问题
	 * 
	 * 解决方法:
	 * A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
	 * B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
	 */
	private static void method4() {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);

		// 先获取int类型的值,再获取String类型的值
		System.out.print("请输入一个整数:");
		int x = sc.nextInt();

		System.out.print("请输入一个字符串:");
		// String str = sc.nextLine();
		
		// 解决方法:A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
		Scanner sc1 = new Scanner(System.in);
		String str = sc1.nextLine();

		System.out.println("x=" + x + " str=" + str);
	}

	/**
	 * 先获取String类型的值,再获取int类型的值
	 */
	private static void method3() {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);

		// 先获取String类型的值,再获取int类型的值
		System.out.print("请输入一个字符串:");
		String str = sc.nextLine();

		System.out.print("请输入一个整数:");
		int x = sc.nextInt();

		System.out.println("str=" + str + " x=" + x);

		System.out.println("========================");
	}
	
	/**
	 * 获取两个String类型的值
	 */
	private static void method2() {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);

		// 获取两个String类型的值
		System.out.print("请输入第一个字符串:");
		String str = sc.nextLine();

		System.out.print("请输入第二个字符串:");
		String str1 = sc.nextLine();
		System.out.println("str=" + str + " str1=" + str1);
	}

	/**
	 * 获取两个int类型的值
	 */
	private static void method1() {
		// 创建Scanner对象
		Scanner sc = new Scanner(System.in);

		// 获取两个int类型的值
		System.out.print("请输入第一个整数:");
		int a = sc.nextInt();

		System.out.print("请输入第二个整数:");
		int b = sc.nextInt();
		System.out.println("a=" + a + " b=" + b);
	}
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44679832/article/details/105578495
Recomendado
Clasificación