Scanner的调用:
new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
Scanner类中的详解:
Scanner : 指扫描器
System.in : 指系统输入
Scanner的方法:
注:Line 是指 行 的意思
public boolean hasNext() //判断扫描器中当前扫描位置后是否还存在下一段
public boolean hasNextLine() //如果在此扫描器的输入中存在另一行,则返回 true。
public String next() //查找并返回来自此扫描器的下一个完整标记。
public String nextLine() //此扫描器执行当前行,并返回跳过的输入信息。
代码演示:
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
while(s.hasNextLine()){
System.out.println(s.nextLine());
}
}
使用 Scanner方法前的注意事项:
1、使用nextInt()时输入的内容必须为数字,如果输入了字符串,程序结束并且会报异常:java.util.InputMismatchException
代码演示:
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(i);
}
2、注:nextInt()和next()判断读取结束的标识是空白符;比如空格,比如回车,比如tab…,而nextLine()的结束标识是回车也就是“\r”
代码演示:
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(i);
}
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
System.out.println(s);
}
3、next()和nextInt()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,而nextLine()不管是否读到有效字符,遇到结束符回车都会结束
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
System.out.println(s);
String ss = scanner.nextLine();
System.out.println(ss);
}
4、 next()和nextInt()读到有效字符后不会将结束符擦除,而nextLine()是会将结束符擦除的,看如下案
例:
public class Test {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println("str:"+str); //输出字符串的内容
String newLine = scanner.nextLine();
System.out.println("newLine:"+newLine); //输出新行内容
String newLine2 = scanner.nextLine();
System.out.println("newLine2:"+newLine2); //输出新行内容
}
}
//把键盘录入的信息全部打印输出到控制台
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println(next);
String nextLine = scanner.nextLine();
System.out.println(nextLine);
String nextLine2 = scanner.nextLine();
System.out.println(nextLine2);
}
5、同一个Scanner对象,不能先录入int,再录入String值,会出异常。
//方法一
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in);
int i = scanner1.nextInt();
Scanner scanner2 = new Scanner(System.in);
String s = scanner2.nextLine();
System.out.println(i + ":"+s);
}
//方法二
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in);
String num1 = scanner1.nextLine();
String num2 = scanner1.nextLine();
int num3 = Integer.valueOf(num1);
System.out.println(num3+":" +num2);
}