Scanner类抛出java.util.NoSuchElementException: No line found的异常 本帖最后由 using_name 于 2014-05-15 20:22:59 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sc.close()会把System.in也关掉,所以... public void close()关闭此扫描器。 如果此扫描器尚未关闭,并且其底层 readable 也实现 Closeable 接口,则该 readable 的 close 方法将被调用。System.in是InputStream的对象,并且关掉之后不能再打开 那么怎样实现在不同的地方读取呢?用Scanner类 Java 是顺序执行的 你执行到.close() 后就代表 你关闭了 流,你再去调用已经被你关闭的流 显然是不现实的我的建议是 你做几个方法里面包含输入流,然后在main里面调用就可以了 如果非要用System.in,那么在没有全部读取完之前不要关闭Scanner 如果非要用System.in,那么在没有全部读取完之前不要关闭Scanner就是说第一个Scanner对象不要关闭,再申请第二个对象。看到youwarning 总觉得不爽啊安如果不用Scanner还有没有其他更好的方法,实现在多处读取控制台的输入,希望有代码哦 也可以用这个BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));这个reader也不能关闭,不过它没有never closed警告 太麻烦了呀,不仅创建对象麻烦,而且还要加try…catch。难道就没有一个更简单的方法吗?我觉得应该有某个通用的方法处理这类问题吧! 主要问题是System.in不能重新打开,所以可以在程序结束时关闭 final Scanner scanner=new Scanner(System.in); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { scanner.close(); } }); 我专门写了一个类class input{ final static Scanner sc=new Scanner(System.in);}以后每次都调用input.sc,最后再把它关掉。这样就好了。非常感谢你,你的回答太专业了! 我是一个本科的菜鸟,还想多问一个关于输入的问题Console cons=System.console();创建的console对象为什么是null比如下面的代码执行不会成功Console cons;char[] passwd;if ((cons = System.console()) != null &&(passwd = cons.readPassword("[%s]", "Password:"))!= null) { ...java.util.Arrays.fill(passwd, ' '); } 你用的是Eclipse吧?Eclipse运行java程序用的是javaw,不关联控制台,所以System.console()是null如果通过cmd运行java命令就好了 虽说这种问题很低级,但是如果没扔告诉的话,自己一时也想不到。我学java时间很短,很多问题都不清除,谢谢指教,非常感谢你。 小牛的疑惑 明明是Map里边新值覆盖老值,如果hashCode和equals返回都是一样的话。 精通java正则的过来解下惑 为什么文本显示不完全? 为何Applet不需要main方法 希望不吝赐教 最好能做一下解释 getArray()怎么用? ■■■请教String截取问题■■■ 移位运算是怎么回事。 我的第一个JAVA程序还是不可使用!是否与我的TOMCAT 4.0 的STARTUP.BAT 运行失败有关系! 新手疑问!!在List集合中加入对象,使用比较器将对象内容进行排序。怎么实现不了比较器呢! 关于xfire webservice的方法调用问题。
如果此扫描器尚未关闭,并且其底层 readable 也实现 Closeable 接口,则该 readable 的 close 方法将被调用。
System.in是InputStream的对象,并且关掉之后不能再打开
我的建议是 你做几个方法里面包含输入流,然后在main里面调用就可以了
就是说第一个Scanner对象不要关闭,再申请第二个对象。
看到youwarning 总觉得不爽啊
安如果不用Scanner还有没有其他更好的方法,实现在多处读取控制台的输入,希望有代码哦
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
这个reader也不能关闭,不过它没有never closed警告
难道就没有一个更简单的方法吗?
我觉得应该有某个通用的方法处理这类问题吧!
final Scanner scanner=new Scanner(System.in);
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
scanner.close();
}
});
class input
{
final static Scanner sc=new Scanner(System.in);
}
以后每次都调用input.sc,最后再把它关掉。这样就好了。
非常感谢你,你的回答太专业了!
Console cons=System.console();
创建的console对象为什么是null
比如下面的代码执行不会成功
Console cons;
char[] passwd;
if ((cons = System.console()) != null &&
(passwd = cons.readPassword("[%s]", "Password:"))!= null) {
...
java.util.Arrays.fill(passwd, ' ');
}
如果通过cmd运行java命令就好了
我学java时间很短,很多问题都不清除,谢谢指教,非常感谢你。