文档章节

Scanner类Java.util.NoSuchElementException 异常

小黄狗
 小黄狗
发布于 2017/02/24 08:53
字数 286
阅读 24
收藏 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;
  }

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

© 著作权归作者所有

共有 人打赏支持
小黄狗
粉丝 30
博文 557
码字总数 179685
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
1
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
2
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
今天
1
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部