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);
}
}