1-解决java Scanner出现 java.util.NoSuchElementException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了1-解决java Scanner出现 java.util.NoSuchElementException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1046字,纯文字阅读大概需要2分钟。
内容图文
![1-解决java Scanner出现 java.util.NoSuchElementException](/upload/InfoBanner/zyjiaocheng/851/778f9dfcab334b90a8c6749427f86100.jpg)
起因:在函数中新建scanner对象,然后多次调用此方法出现上述异常
原因:Scanner(system.in)在Scanner中接受的是键盘 输入,当调用close()方法时
Scanner的关闭会导致System.in的关闭,System.in是标准输入(键盘输入),只能关一次,关闭后不能再打开。
解决办法1:在主函数的声明,然后作为参数传入方法中
解决办法2:
查看scanner源码
// Boolean indicating if this scanner has been closed private boolean closed = false; public void close() { if (closed) return; if (source instanceof Closeable) { try { ((Closeable)source).close();//将会关闭流 } catch (IOException ioe) { lastException = ioe; } } sourceClosed = true; source = null; closed = true; }
直接在函数中用反射改变closed的值,实现永远不关闭
public void scanner() throws NoSuchFieldException, IllegalAccessException, InstantiationException { Scanner my=new Scanner(System.in); a=my.nextInt(); b=my.nextInt(); c=my.nextInt(); Class clazz =Scanner.class; Field field = clazz.getDeclaredField("closed"); field.setAccessible(true); field.set(my,true); my.close(); }
当想要关闭的时候,再使用反射改变为false,调用scanner.close();
内容总结
以上是互联网集市为您收集整理的1-解决java Scanner出现 java.util.NoSuchElementException全部内容,希望文章能够帮你解决1-解决java Scanner出现 java.util.NoSuchElementException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。