import java.util.Scanner;
/*
* Scanner类:从键盘读取数据
*
* 为了避免输入的数据和读取的数据不匹配性,可以在读取数据之前用hasNextXxx方法判断数据是否是想要的数据
* 比如想要的是int类型数据,可以先使用hasNextInt方法判断,用户输入的数据是否是int类型;如果是再使用nextInt接收
*/
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
if (sc.hasNextInt()) {
int i = sc.nextInt();// InputMismatchException
System.out.println(i);
} else {
System.out.println("你输入的不是一个整数");
}
}
}
import java.util.Scanner;
/*
* Scanner一般使用空格,回车换行作为结束标记
*
* 使用Scanner先nextInt然后再nextLine会出现bug?nextLine无法接收键盘录入的值
* 我们先使用nextIne接收了数据123,但是\r\n并没有接收;然后紧接着nextLine接收了\r\n以为输入结束了,然后输出了回车换行
所以给我们造成了错觉,好像nextLine并没有接收数据
我们怎么解决呢?
可以把所有想要接收的数据都用nextLine接收,然后再强转
*/
public class ScannerDemo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/*
* System.out.println(sc.nextInt()); System.out.println(sc.nextInt());
* System.out.println(sc.nextInt());
*/
System.out.println("请输入一个整数:");
if (sc.hasNextInt()) {
String ss = sc.nextLine();
//把字符串强转成int值
int i = Integer.parseInt(ss);
System.out.println(i);
}
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
System.out.println(s);
}
}