Java中next和nextline的区别

一、next和nextline同时使用的问题

因为最近发现当输入两行语句的时候,如果next在上,nextline在下,就会导致输入异常,所以总结了一下next和nextline的区别

Scanner sc = new Scanner(System.in);
        System.out.println("next输入");
        String str1 = sc.next();
        System.out.println("nextline输入");
        String str2 = sc.nextLine();

        System.out.println("str1:"+str1);
        System.out.println("str2:"+str2);
		
		//运行结果:
		next输入
		123
		nextline输入
		str1:123
		str2:

可以发现next输入后,nextline输入直接被跳过去了

二、next和nextline

1.next

    API文档解释:查找并返回来自次扫描器的下一个完整标记 简单理解就是next只能识别一段完整的字符,遇到空格,回车等都会结束并返回值

2.nextline

    API文档解释: 此扫描器执行当前行,并返回跳过的输入信息 简单理解就是nextline会识别当前行的全部内容,遇到换行符才结束

三、异常原因及解决

知道了next和nextline的区别之后,导致异常的原因就很明显了,next只会读取字符内容,遗留下来的换行符被nextline读取到,所以直接结束了nextline的输入

解决方案: 解决方案就很简单啦,在要nextline上面再加一行nextline读取掉next留下来的换行符就好了

Scanner sc = new Scanner(System.in);
        System.out.println("next输入");
        String str1 = sc.next();
        System.out.println("nextline输入");
        sc.nextline();
        String str2 = sc.nextLine();
		
        System.out.println("str1:"+str1);
        System.out.println("str2:"+str2);
        //运行效果
        next输入
		123
		nextline输入
		123
		str1:123
		str2:123
经验分享 程序员 微信小程序 职场和发展