在实现字符窗口的输入时,我个人更喜欢选择使用扫描器Scanner,它操作起来比较简单。在写作业的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine(),但是这两种方法究竟有什么区别呢?我查了一些资料总结了一下,希望对大家有所帮助~

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。

而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

鉴于以上两种方法的只要区别,同学们一定要注意next()方法和nextLine()方法的连用,下面举个例子来说明:

import java.util.Scanner;
public class NextTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
String s1,s2;
Scanner sc=new Scanner(System.in);
System.out.print("请输入第一个字符串:");
s1=sc.nextLine();
System.out.print("请输入第二个字符串:");
s2=sc.next();
System.out.println("输入的字符串是:"+s1+" "+s2);
}
}

运行结果:

请输入第一个字符串:home
请输入第二个字符串:work
输入的字符串是:home work

但如果把程序改一下, s1=sc.next(); s2=sc.nextLine();

运行结果是:

请输入第一个字符串:home
请输入第二个字符串:输入的字符串是:home

可以看到,nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉。例如上面的程序改写为:

import java.util.Scanner;
public class NextTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
String s1,s2;
Scanner sc=new Scanner(System.in);
System.out.print("请输入第一个字符串:");
s1=sc.next();
sc.nextLine();
System.out.print("请输入第二个字符串:");
s2=sc.nextLine();
System.out.println("输入的字符串是:"+s1+" "+s2);
}
}

运行结果是:

请输入第一个字符串:home
请输入第二个字符串:work
输入的字符串是:home work

https://zhidao.baidu.com/question/428984975.html

nextInt与nextLine相关推荐

  1. 关于java中next,nextInt,nextLine的区别

    https://blog.csdn.net/qq_35038153/article/details/79577464 Java中关于nextInt().next()和nextLine()的理解 先看解 ...

  2. Java基础之nextInt()与nextLine()区别(包括nextInt之后无法nextLine无法读取下一行的数据)

    在Java中其实存在一些小Bug,或者说是一些语法导致的隐蔽问题.其中之一就是,如果我们在使用nextLine()读取输入数据时,如果前面有 nextInt().nextFloat() 等只需要读取一 ...

  3. scanner中nextInt和nextLine的顺序问题

    在牛客网做输入输出专项训练时发现的一个小问题 原题链接字符串1 处理输入时,有两行 所以我打算这样取输入 Scanner in = new Scanner(System.in); int n = in ...

  4. NextInt()和NextLine()

    1.nextInt()和next().nextFloat().nextDouble()都是只读取有效字符的,不会读取空格键.Tab键和回车键,当它在输入有效字符前碰到这些无效字符时会自动跳过,在输入有 ...

  5. Scanner的next,nextint和nextLine的使用总结

    问题所在: java中Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误,那就是当next()或者nextInt(),nextDouble() . ...

  6. nextInt和nextLine以及next方法的区别

    1.nextInt() 只读取整型的数据,输入读取完之后,光标仍在当前行. 2.nextLine() 扫描到一行内容,当遇见换行符时,结束扫描.一旦输入读取完毕,该方法会将光标移到下一行开始的位置. ...

  7. java中nextint_java中next()、nextInt()、nextLine()区别

    Scanner 使用分隔符模式将其输入分解为标记,然后可以使用不同的 next 方法将得到的标记转换为不同类型的值.默认情况下该分隔符模式与空白匹配.即 public static void main ...

  8. Java中nextInt()和nextLine()混用问题解决

    Scanner类概述: Scanner类是是用来接收控制台输入的字符串以及基本数据类型的类. 常用方法: 1.int nextInt(): 接收输入的int型的数据. 结束符为空格或者回车 2.Str ...

  9. 当Scanner.nextInt()遇到了Scanner.nextLine()

    一.先看一段正常的代码 一段用Scanner捕获键盘输入的代码: Scanner sc = new Scanner(System.in); // 先读取键盘输入的字符串 System.out.prin ...

最新文章

  1. 打印出重复的姓名和重复的次数,并按重复次数排序:
  2. 【HNOI2013】消毒
  3. 工作组访问不到别人的计算机,众果搜的博客
  4. MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...
  5. (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  6. day 029 缓冲区和粘包 day 30 粘包的解决
  7. lambda表达式的语法精简
  8. oracle10g debian,Debian5下oracle10g安装时DISPLAY的设置
  9. Codeforces Round #102 (Div. 1) D Help Shrek and Donkey 2
  10. vue2.0一起在懵逼的海洋里越陷越深(二)
  11. Excel 截取字符串函数
  12. 《动手学深度学习》学习总结
  13. Python修改图像尺寸
  14. 走进大数据丨 一条让我虎躯一震的SQL
  15. C语言中插入法的应用
  16. M1 芯片打开软件提示:“XXXX” 因为出现问题而无法打开 怎么解决?
  17. python生成器能用while吗_Python:在while循环中使用生成器
  18. elasticsearch安装采坑记录
  19. 中式红木整装塑造出中式家居的浪漫氛围
  20. 8月份开基飙升 股票基金最赚钱

热门文章

  1. CSS3系列 02 元素选择器
  2. LibGDX开发常见问题
  3. Clion使用EasyX
  4. spring + mybatis + c3p0 整合(配置篇)
  5. 语音合成(TTS)论文优选:Accent and Speaker Disentanglement in Many-to-many Voice Conversion
  6. VS2017安装警告。未能安装包“Microsoft.VisualCpp.Redist.14,version=14.16.27033.4,chip=x86”
  7. artifical reality
  8. 拜日式精准引导词_瑜伽 拜日式引导词 分享
  9. 电子元器件图片、名称、符号,超全面+唯样商城
  10. Linux 应急响应流程及实战演练