版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/84558685
Scanner的概述
Scanner的构造方法原理
Scanner(InputStream source),System类下有一个静态字段:
public static final InputStream in;标准的输入流,对应着键盘录入。
一般方法
1、hasNextXxx()判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx。
2、nextXxx()获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分割符。
循环输入代码如下:
package java基础;
import java.util.Scanner;
public class Demo_Scanner {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNextInt()) {
int b = scan.nextInt();
System.out.println(b);
}
}
}
常用的两个方法
1、public int nextInt():获取一个int类型的值。
2、public String nextLine():获取一个String类型的值。
先获取int值,然后获取String值出现问题。
package java基础;
import java.util.Scanner;
public class Demo1_Scanner {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int b = scan.nextInt();
String line = scan.nextLine();
System.out.println(b);
System.out.println(line);
}
}
出现问题的原因:
nextInt()是键盘录入整数的方法,当我们录入数值的时候其实在键盘上录入的是数值和\r\n,nextInt()方法只能获取10就结束了,nextLine()是键盘录入字符串的方法,可以接收任意类型,但是遇到\r\n就会结束获取键盘录入的数据。
该问题的解决方案:
(1)先获取一个数值后,在创建一个新的键盘录入对象多去字符串,这样做比较浪费空间。
(2)键盘录入的都是字符串,都用nextLine方法,然后将第一个字符串转化成数值。