文档章节

Scanner类Java.util.NoSuchElementException 异常

为了美好的明天
 为了美好的明天
发布于 2017/02/24 08:53
字数 286
阅读 40
收藏 0

今天使用Scanner类从控制台获得数据时,报了Java.util.NoSuchElementException 异常。

下面是问题代码段

public static void init(LinkList l){
        for(int i=0;i<3;i++){
            System.out.println("请输入第"+i+"个值");
            Scanner temp=new Scanner(System.in);
            int len=temp.nextInt();
            l.addNode(len);
            temp.close();
        }
    }

当要输入第二个数据的时候就会报错 。 这是异常信息

请输入第0个值
2
请输入第1个值
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at com.zji.List.LinkList.init(LinkList.java:33)
    at com.zji.List.LinkList.main(LinkList.java:60)

这是因为temp.close()在for循环中关闭的原因,只要把temp.close(),写在for循环外面就可以了。

刚开始我想我循环一次new 一个Scanner 然后给他关了 ,再循环再开不行吗? 不可以的哦! 这是因为 你的Scanner.close会调用System.in.close方法,把这个System.in关闭了。你之后new Scanner并不会帮你开启System.in的流,所以报错了.

下面是close方法的源码可以参考一下

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;
  }

感谢大佬们的帮助谢谢你们!

© 著作权归作者所有

共有 人打赏支持
为了美好的明天
粉丝 32
博文 603
码字总数 180009
作品 0
通州
程序员
私信 提问
小朋友学Java(13):控制台输入

C语言用scanf来输入,C++用cin来输入,java则用Scanner来输入。 程序 运行结果 说明 Scanner这个类是Java 1.5引入的,具体位于java.util.Scanner中。所以开头用import java.util.*; 表示把j...

翡翠森林Z
2017/12/17
0
0
jedis异常:NoSuchElementException: Timeout waiting for idle object

项目线上环境发现:java.util.NoSuchElementException: Timeout waiting for idle object 问题原因:不应该在try中释放资源,而应该在finally中处理。虽然是非常基础的语法,但还是有可能会写...

Airship
04/24
0
0
jedis异常:Timeout waiting for idle object

项目线上环境发现:java.util.NoSuchElementException: Timeout waiting for idle object 问题原因:不应该在try中释放资源,而应该在finally中处理。虽然是非常基础的语法,但还是有可能会写...

凯文加内特
2015/11/28
412
0
五、JAVA基础--异常、断言、日志

处理异常错误 1)异常对象都是派生于Throwable类的一个实例,分成Error和Exception。 2)Error描述java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种异常。 3)Exception又分为I...

cnslp
2017/04/24
0
0
java 键盘输入多种方法

实例程序: 1、利用 Scanner 实现从键盘读入integer或float 型数据 //import java.io.;import java.util.;public class InputTest{public static void main(String[] args){ Scanner in = ne......

测试-雨
2015/10/21
233
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
9分钟前
0
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
14分钟前
0
0
《告诉你真实的美国教育》的读后感3900字

《告诉你真实的美国教育》的读后感3900字: 文章的开篇分析了我们耳熟能详的关于美国教育的小故事,就是那个因为幼儿园的老师教了“0”这个字母,然后妈妈告老师剥夺了孩子的想象力,再然后幼...

原创小博客
23分钟前
0
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
38分钟前
1
0
exportfs命令, vsftp搭建ftp服务

exportfs命令 当修改/etc/exports文件后,更改的内容是不会立即生效的。如果重启nfs服务,会导致客户端重启期间的请求是挂起等待的,可以把客户端的挂载umount进行卸载后,再重启nfs服务,但...

野雪球
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部