搜索
您的当前位置:首页scanner类中next()和nextLine()的区别

scanner类中next()和nextLine()的区别

来源:世旅网

Scanner类中next()和nextLine()的区别

public class Next_And_NextLine {

    private static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("代码1");
        code1();
        System.out.println("==========================================");
        System.out.println("代码2");
        code2();
    }

    public static void code1(){
        String string = scanner.next();
        System.out.println(string);
        string = scanner.nextLine();
        System.out.println(string);
    }

    public static void code2(){
        String string = scanner.nextLine();
        System.out.println(string);
        string = scanner.next();
        System.out.println(string);

    }
}

下图是执行过程

工作原理

看过工作原理后,来仔细了解一下这个过程
执行code1() 时,当遇到next()函数时,程序等待用户的输入,在上图中只看到输入了abc,但是在缓冲区中会出现换行符,因此,缓冲区中的数据是abc和换行符,有因为next()的工作原理,将abc读取后,在缓冲区中留下了换行符,下次读取的起点定位到abc之后换行符之前,当紧接着使用nextLine()函数时,它会自动读取换行符,函数结束,不会等待用户的输入

先使用nextLine()时,该函数会将缓冲区中扫描过的字符包括空白符都返回,接下来使用next()函数时,就会等待用户的输入

因篇幅问题不能全部显示,请点此查看更多更全内容

Top