Scanner 中next()和nexline()方法的区别
在java实现字符窗口的输入时,很多人更喜欢选择使用扫描器scanner,它操作起来比较简单。在编程的过程中,我发现用scanner实现字符串的输入有两种方法,一种是next(),另一种是nextline(),这两种有以下区别:
1. next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、tab键或enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、tab键或enter键等视为分隔符或结束符。
2. 简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。
3. nextline()方法的结束符只是enter键,即nextline()方法返回的是enter键之前的所有字符,它是可以得到带空格的字符串的。
下面介绍使用方法的例子:
import port java.util.scanner;
public class nexttest{
public static void main(string[] args) {
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);
}
}
运行结果:
请输入第一个字符串:hello
请输入第二个字符串:world 输入的字符串是:hello world 把程序改一下:
import port java.util.scanner;
public class nexttest{
public static void main(string[] args) {
string s1,s2;
scanner sc=new scanner(system.in);
system.out.print("请输入第一个字符串:");
s1=sc.next();
system.out.print("请输入第二个字符串:");
s2=sc.nextline();
system.out.println("输入的字符串是:"+s1+" "+s2);
}
}
运行结果是:
请输入第一个字符串:hello
请输入第二个字符串:输入的字符串是:hello 可以看到,nextline()自动读取了被next()去掉的enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextdouble() , float nextfloat() , int nextint() 等与nextline()连用时都存在这个问题,解决的办法是:在每一个 next()、nextdouble() 、 nextfloat()、nextint() 等语句之后加一个nextline()语句,将被next()去掉的enter结束符过滤掉。 import port java.util.scanner;
public class nexttest{
public static void main(string[] args) {
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);
}
} 运行结果是:
请输入第一个字符串:hello
请输入第二个字符串:world
输入的字符串是:hello world
Scanner 中next()和nexline()方法的区别的更多相关文章
- Java线程中run和start方法的区别
http://bbs.csdn.net/topics/350206340 Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法 ...
- 深入理解jQuery中live与bind方法的区别
本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用 ...
- js正则表达式中test,exec,match方法的区别说明
js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...
- jQuery中attr和prop方法的区别
jQuery中attr和prop方法的区别。 http://my.oschina.net/bosscheng/blog/125833 http://www.javascript100.com/?p=8 ...
- C#中抽象方法与虚方法的区别(转)
C#中抽象方法与虚方法的区别 一.抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static. 抽象方法如下示: public abstract class Peo ...
- Java线程中yield与join方法的区别
长期以来,多线程问题颇为受到面试官的青睐.虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用.之前,我讨论了一个w ...
- Java -- Thread中start和run方法的区别
一.认识Thread的 start() 和 run() 1.start(): 我们先来看看API中对于该方法的介绍: 使该线程开始执行:Java 虚拟机调用该线程的 run 方法. 结果是两个线程并发 ...
- hiberante中get和load方法的区别
1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索执行机制上对比: ...
- 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法
Integer类中的. 关于parseInt()方法的API文档. 返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...
随机推荐
- time,datetime,random,os,sys,hashlib,logging,configparser,re模块
#-----time模块----- print(help(time)) #打印time帮助文档 print(time.time()) #打印时间戳 1569824501.6265268 time.sl ...
- 如何用python编写一个计时器的程序
python计时器的程序的代码和注释 import time as t #引入time模块 class MyTimer(): def __init__(self): #构造函数 ...
- git的使用(二)
GITHUB 简介 github可以是全世界最大的同性交友网站,其实就是和百度云一个性质. gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅 ...
- 201871010101-陈来弟《面向对象程序设计(Java)》第十二周学习总结
201871010101-陈来弟<面向对象程序设计(Java)>第十二周学习总结 实验十 集合与GUI初步 实验时间 2019-11-14 第一部分 理论部分 1.(1) 用户界面 ...
- sed与grep练习题
第1章 练习题 第1题 取得/etc/hosts 文件的权限 如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得644 这样的数字. 方法一 ...
- django settings实现原理及自定义项目settings配置
基于django 中的settings实现原理,实现自己项目配置文件的可插拔式设计 ##首先说一下django中settings.py中的实现原理 ''' 应该明确一点,django暴露给用户一个自定 ...
- [LeetCode] 660. Remove 9 移除9
Start from integer 1, remove any integer that contains 9 such as 9, 19, 29... So now, you will have ...
- [LeetCode] 227. Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- 【转】python中numpy模块下的np.clip()的用法
转自:https://blog.csdn.net/HHTNAN/article/details/79799612 Numpy 中clip函数的使用 一维数组 其中a是一个数组,后面两个参数分别表示最小 ...
- UDF——处理二维网格的利器:Boost.Geometry库
本文编译工具:VC++ UDF Studio 该插件可以直接在Visual Studio中一键编译.加载.调试UDF源码,极大提高编写排错效率,且支持C++,MFC,Windows API和第三方库, ...