Scanner用法
2018-04-06 本文已影响17人
Ferrari1001
一、常用方法next()、nextInt()和nextLine()的使用总结
例一
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
while(sc.hasNextInt()){
int num = sc.nextInt();
System.out.println("请输入一个字符串");
String str = sc.nextLine();
System.out.println("num="+num+",str="+str);
System.out.println("请输入一个整数");
}
}
输出结果:
image.png
nextInt()方法会读取下一个int型标志的token.但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。
例二
将nextInt()方法换成next()
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个字符串");
while(sc.hasNext()){
String str1 = sc.next();
System.out.println("请输入第二个字符串");
String str = sc.nextLine();
System.out.println("str1="+str1+",str="+str);
System.out.println("请输入第一个字符串");
}
}
输出结果:
image.png从结果可以看出,next()以忽略空格,Tab,Enter键开始,以空格,Tab,Enter键作为结束符结束。
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键,换行符或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。
而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
例三
当程序中next()或nextInt() 方法后面需要使用nextLine()方法时,可以在next()或nextInt()方法使用Enter键之后,填充一个无用的nextLine(),这样我们就可以从键盘输入我们需要键入的字符串了,而不会获取到上一次输入中分隔符后面的字符内容了。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个字符串");
while(sc.hasNext()){
String str1 = sc.next();
System.out.println("请输入第二个字符串");
sc.nextLine();
String str = sc.nextLine();
System.out.println("str1="+str1+",str="+str);
System.out.println("请输入第一个字符串");
}
}