三种区分next ()、nextInt ()和nextLine () )都是Scanner的内置方法,主要体现在处理空间的方式和返回值方面的差异。
对空格的处理
使用nextLine ()方法时,会将空格视为字符串的一部分,而不是两个字符串之间的间距
如果使用next (和nextInt )方法遇到空间,将停止读取并返回在空间之前读取的内容。
返回值
nextInt ) )的返回值为int型。
next ()、nextLine )的返回值都是字符串类型;
当然,如果输入了数值,也可以通过nextLine ()接收并通过integer.parseint (scan.nextline ) )进行转换。
作为例子使用scanners can=new scanner (system.in ); System.out.println ('输入开始:'); System.out.println (内容: ) scan.nextline ) ); 结果:
开始输入:
12 34 56
内容:12 34 56
scanners can=new scanner (system.in ); System.out.println ('输入开始:'); while(scan.Hasnext () ) { System.out.println ) )内容:' scan.next ) ); //nextInt ) )的用法与next ) )相似)的结果:
开始输入:
12 34 56
内容:12
内容:34
内容:56
注意事项如果next ()、nextInt () )在读取数据后指针仍位于当前行中,且紧跟在nextLine () )之后,则会出现数据读取错误。 示例:
sannersc=newscanner(system.in; System.out.println ('请输入您的姓名:'); String name=sc.nextLine (; System.out.println ('请输入年龄:'); int age=sc.nextInt (; System.out.println (名称: ' name ); System.out.println (年龄: ' age ); 结果:
请输入你的名字。 name请输入您的年龄。 18名称: name年龄: 18此时结果正常,但尝试调换sc.nextLine (和sc.nextInt )的顺序。
sannersc=newscanner(system.in; System.out.println ('请输入年龄:'); int age=sc.nextInt (; System.out.println ('请输入您的姓名:'); String name=sc.nextLine (; System.out.println (名称: ' name ); System.out.println (年龄: ' age ); 结果:
请输入年龄。 请输入18个名字。 姓名:年龄: 18此时可知。 输入结果错了。 解决办法如下。
sannersc=newscanner(system.in; System.out.println ('请输入年龄:'); int age=sc.nextInt (; sc.nextLine (; 添加sc.nextLine (; System.out.println ('请输入您的姓名:'); String name=sc.nextLine (; System.out.println (名称: ' name ); System.out.println (年龄: ' age );