问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java Scanner出现 java.util.NoSuc...33

发布网友 发布时间:2023-11-20 00:14

我来回答

4个回答

热心网友 时间:2024-07-20 19:42

在你关闭的时候,会把System.in也关闭了。当你下次new一个读取的时候,因为输入流已经关闭,所以读取的值就是-1;在Scanner 的readinput方法里面有以下代码。

 try {
            n = source.read(buf);
        } catch (IOException ioe) {
            lastException = ioe;
            n = -1;
        }

        if (n == -1) {
            sourceClosed = true;
            needInput = false;
        }

因为读到了-1就设置sourceClosed =true;neepinput=false;

在next方法里面有以下代码:


 if (needInput)
                readInput();
            else
                throwFor();

当needinput为false,就执行throwFor,因此再看throwFor

 skipped = false;
        if ((sourceClosed) && (position == buf.limit()))
            throw new NoSuchElementException();
        else
            throw new InputMismatchException();

position 是当前读取的内容在缓冲区中位置,因为读取的是-1,因此position =0,而buf.limit()也等于0,因此就执行了throw new NoSuchElementException();

热心网友 时间:2024-07-20 19:46

我试过了 确实是你把A中的关闭了 貌似我A B反了 也没事
import java.util.Scanner;
public class B {

public int aa(){

Scanner input = new Scanner(System.in);
System.out.println("请输入一个值");
int n = input.nextInt();
input.close();
return n;

}
}
=========另一个类=======

import java.util.Scanner;
public class A {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B b = new B();
int c = b.aa();

Scanner input = new Scanner(System.in);
System.out.println("请输入另一个值");
int m = input.nextInt();

m = c+m;
System.out.println(m);

}
}

热心网友 时间:2024-07-20 19:43

你把你的代码贴出来

热心网友 时间:2024-07-20 19:47

贴下具体代码 你是如何关闭 如何调用的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天将雄师观后感600字 为什么喝酒会降血糖 牛栏山 52度浓香型白酒-购买最佳价格 全兴大曲 52度浓香型白酒-购买最佳价格 笔记本电脑怎么接音箱电脑如何连接外置音箱 笔记本电脑有音箱插孔吗笔记本电脑如何连接喇叭 冰箱压缩机过热启动5秒就停了 周长相等的正方形和圆,其面积比是多少 周长相等的正方形和圆面积比是多少 周长相等的正方形与圆形,边长与半径的比是( ),面积之比是( )。 要有... 在名侦探柯南中怪盗基德在几集知道柯南是工藤新一的1 请问大家java.util.NoSuchElementExc...1 换绑的时候显示:你已设置拒登录,换绑,注册短信该怎么办? 东营市齐航电子商务有限公司怎么样? 电脑怎样同时登录两个636 每天爬山可以锻炼腹肌吗?19 ...你已设置拒登录,换绑,注册短信。这是怎么回事? 请问大家java.util.NoSuchElementExc...1 求解答过程:下列短语是动宾短语的 魔兽世界燃烧的远征CG,这是法师什么套装?1 怎样用手机号注册291 蛇的呼吸器官是什么39 周口五一广场对面眼镜城谁去过?就是那个号称眼镜白菜价一副也批...1 汽车点火时高压线圈点火电压是多少11 access窗体中,浮动的提示文本应该怎么做 刺青跟纹身有什么区别32 一个号码注册了两个 怎么找回第一个? 从上海走申苏浙皖高速到湖州怎么转宁杭高速到莫干山 燃气热水器燃气开关有什么作用吗? 外星人耳机支持转接器吗 怎么用手机号注册?290 怎样申请并注册467 3366中彩色消砖块下载如何下载 史密斯夫妇翻拍自希区柯克的哪部电影?1 java Scanner出现 java.util.NoSuc...33 java.util.NoSuchElementExcepti...64 人工土壤如何? “多好的灰雀,可惜再也飞不回来了。”这句话列宁实际是在说什么? 梦见毛驴说话,为蛇报仇踢我1 工友之间误伤一切费用应该谁管 怎样用手机号码注册 2020年5月13日到2020年10月20日多少日历天?3 vivo游戏中心此机型暂不支持预约功能 我以前的突然不见了怎么找回来了_百度问一问 我玩彩虹六号,因为以前冲现在被封了七天,等账号解封后,我... 彩虹六号充值有被封号的情况发生吗,想在淘宝充值但怕被封号 点火器供给高压点火线圈的电压是多少伏5 ...你已设置拒登录,换绑,注册短信。这是怎么回事? 有人看过“史密斯夫妇”这个电影是什么时候拍摄的?2 帮忙起一个男孩名字,以J为首字母的中文名字,就像军子Junzi啦~谢谢_百度...