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("请输入第一个字符串");
        }
}
输出结果:
image.png
上一篇下一篇

猜你喜欢

热点阅读