导包 创建对象 接收从键盘录入数据
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
Scanner的使用问题
-
next()、nextInt()等一系列方法和nextLine()的区别
-
next()、nextInt()等一系列方法
-
next()之类的一系列方法遇见第一个有效字符(非空格,非换行符,非制表符)时,开始扫描
-
当遇见第一个分隔符或结束符(空格、换行符或者制表符)时,结束扫描,获取扫描到的内容
-
即获得第一个扫描到的不含空格、换行符的单个字符串
-
-
nextLine()方法
-
从方法名上就可以看出来,这个方法是获取一行的内容作为一个字符串被接收
-
该方法不会因为空格或制表符号而结束扫描
-
只会因为回车(换行)而结束扫描
-
由于nextLine()方法碰到换行才结束扫描的特性,所以使用有如下问题:
当使用Scanner接收数值类型后又使用nextLine()方法接收字符串时,输入数值后回车
会导致程序并不会接收一个字符串,而是直接结束键盘录入
-
究其原因在于,nextLine()方法碰到回车就结束扫描,所以该方法此时接收的实际上是一个(绝对)空字符串
解决办法有很多种
-
可以使用不同的Scanner对象接收,这样肯定不存在冲突问题
-
在接收int数据的后面加一个不接收数据的nextLine用来接收回车
-
用next()方法接收字符串,但是需要注意该方法以分隔符结束,不再是接收一行了
-
可以统一用字符串接收数值类型,接收完毕后再进行类型转换
Integer.parseInt()传入一个字符串,转换成int