欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 关于java输入字符串的一些问题

关于java输入字符串的一些问题

2024/11/1 16:18:10 来源:https://blog.csdn.net/weixin_74141526/article/details/141719611  浏览:    关键词:关于java输入字符串的一些问题

最近自学java,学到了Scanner类这块,我想着测试一下输入,遇到了个问题,我想要输入两个字符串,但是我输入一个字符串后程序就停止运行了,有点疑惑,我的代码如下

s1=scan.next();
System.out.print(s1);s2=scan.nextLine();
System.out.print(s2);

结果就是只能输出s1,然后我就想起来这两种输入方式的区别

next() 与 nextLine() 区别

next():

    1、一定要读取到有效字符后才可以结束输入。
    2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
    3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    4、next() 不能得到带有空格的字符串。

nextLine():

    1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    2、可以获得空白。

 输入一个字符串后我们会按回车结束,我们按的回车键也会送入键盘缓冲区作为输入的一部分只不过会被转化为换行符,而且这两种方法都不会把输入的回车给取走,也就是说输入s1的时候输入字符串+回车,next()仅仅是把字符串取走,回车还留在缓冲区中,这样程序接着执行到next()的时候nextLine()就会取走回车,因为nextLine()取字符串是以回车为结束标志,所以就会造成以上问题,只能输入一个有效的字符串。

要解决这个问题,只需要在第一个next后在加一个nextLine()取走进入缓冲区的回车符,这样程序执行到下一个nextLine()时就会等待我们输入下一个字符串了,如下:

s1 = scan.next();
System.out.print(s1);
scan.nextLine(); // 取走回车键
s2 = scan.nextLine();
System.out.print(s2);

需要注意的是:不能使用next()来取回车键,因为像上面说过的对输入有效字符之前遇到的空白,next() 方法会自动将其去掉,对next()来说回车键不是一个有效字符所以会自动将它去掉,然后等待用户输入下一个有效字符串。

使用nextLine()因为它以回车为结束符,遇到回车就会停止读取字符并返回回车前取到的字符串(会将回车符消耗掉),这里就是返回一个空字符。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com