一.Scanner类的概述
- Scanner类:简单的文本扫描器,一般情况用于键盘录入
- Scanner类:java.util包下,需要导包
- 创建键盘录入对象:
Scanner sc = new Scanner(System.in);
System类中(常用类的一种),System 类包含一些有用的类字段和方法,它不能被实例化
public static final InputStream in()
System.in = InputStream is ;
,标准输入流= 字节输入流
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
//接收数据
int a = sc.nextInt();
System.out.println("这个数是:"+a);
}
}
结果:
请输入一个整数:
10
这个数是:10
二.Scanner类的常见方法
public boolean hasNextxxx()
:返回的是一个布尔类型,当前扫描器是否含有xxx这个类型的标记public xxx nextxxx()
:获取这个标记值
常见异常:InputMismatchExcepition:你输入的和要的数据类型不一致
public class Demo2 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
//判断当前扫描器是否含有xxx这个类型的标记
if(sc.hasNextInt()){
int a = sc.nextInt();
System.out.println("这个数是:"+a);
}else{
System.out.println("输入错误");
}
}
}
结果:
请输入一个整数:
10.5
输入错误
三.Scanner类的一个问题
public int nextInt()
:接收一个int类型的数据
public String nextLine()
:接收一个String类型的数据
问题:
先接收了一个int类型的数据,然后再接收String类型,发现String类型的数据没有接收到
原因:
换行符的问题,在接收数据完成然后要手动的回车,出现了这个问题
解决:
在接收字符串之前,需要重新键盘录入对象(String s = 对象名.nextLine);