java中Scanner的hasNext()的疑问
来源:互联网 发布:淘宝代运营骗局 深圳 编辑:程序博客网 时间:2024/05/29 08:28
请问下面代码有什么区别,该如何输入才能使第一段代码不满足条件而跳出循环?
Scanner s = new Scanner(System.in); while(s.hasNext()) { System.out.println(s.next()); }
Scanner s = new Scanner(System.in); while(true) { System.out.println(s.next()); }
第一个问题,两段代码的区别在于阻塞的位置不同,加上一行输出代码就可以很明显地看到差别。
import java.util.Scanner;public class Test { public static void main(String[] args) { Scanner s = new Scanner(System.in); while(s.hasNext()) { System.out.print("You inputted: "); System.out.println(s.next()); } }}
/** * Returns true if this scanner has another token in its input. * This method may block while waiting for input to scan. * The scanner does not advance past any input. * * @return true if and only if this scanner has another token * @throws IllegalStateException if this scanner is closed * @see java.util.Iterator */public boolean hasNext() { ensureOpen(); saveState(); while (!sourceClosed) { if (hasTokenInBuffer()) return revertState(true); readInput(); } boolean result = hasTokenInBuffer(); return revertState(result);}
/** * Finds and returns the next complete token from this scanner. * A complete token is preceded and followed by input that matches * the delimiter pattern. This method may block while waiting for input * to scan, even if a previous invocation of {@link #hasNext} returned * <code>true</code>. * * @return the next token * @throws NoSuchElementException if no more tokens are available * @throws IllegalStateException if this scanner is closed * @see java.util.Iterator */public String next() { ensureOpen(); clearCache while (true) { String token = getCompleteTokenInBuffer(null); if (token != null) { matchValid = true; skipped = false; return token; } if (needInput) readInput(); else throwFor(); }}
第二个问题,想要结束循环,在Windows环境下,需要输入Ctrl+Z;而在Unix环境下,需要输入Ctrl+D(在myeclipse编译器中也是如此操作)。注意,这是输入,而不是对控制台进行操作。这相当于向控制台输入一个字符,这个字符代表EOF,此时hasNext()方法返回false,循环结束。
0 0
- java中Scanner的hasNext()的疑问
- scanner.hasNext()的作用
- 【java基础】解决Java中 while(Scanner.hasNext())一直为死循环的问题!
- Scanner中hasNext方法
- scanner hasnext方法的结束输入
- 关于Java中Scanner对象的hasNext()方法对实现Readable接口的对象中的read()方法调用的探讨
- 关于Java中Scanner对象的hasNext()方法对实现Readable接口的对象中的read()方法调用的探讨
- java中Scanner类nextLine()、next()、hasNext()等总结
- Java中hasNext()和next()的一种实现方法
- 关于java中hasNext的探索中的一点想法
- Java中Scanner的用法
- Java中Scanner的用法
- Java中Scanner的用法
- java中Scanner的用法。
- java中Scanner的使用方法
- Java中Scanner的用法
- Java中Scanner的用法
- Java中Scanner的用法
- 3个多月之后
- javaweb项目-将数据导出为excel文件思路总结
- C#调用百度地图API
- 数字证书原理[推荐]
- Android 手机root
- java中Scanner的hasNext()的疑问
- SQL 各种锁等待类型 wait type--sys.dm_os_wait_stats 表
- Python爬虫实战(1):爬取Drupal论坛帖子列表
- Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environmen
- 页眉中的导航如何写
- nginx ,redis,tomcat 配置成服务方式
- Windows下faster_rcnn运行问题
- Substring with Concatenation of All Words
- SQLServer2012转2008(高版本向低版本兼容)