A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 墨染 初级黑马   /  2015-8-23 22:14  /  1498 人查看  /  33 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args){
                while(true){
                        Scanner sc = new Scanner(System.in);
                        int num = sc.nextInt();
                        System.out.println(num);
                        sc.close();
                }
        }
这一段代码int num = sc.nextInt();这句报异常是怎么回事?

33 个回复

倒序浏览
哪位大神帮忙解决下,
Exception in thread "main" java.util.NoSuchElementException
报这个异常
回复 使用道具 举报
分号中文的吧
回复 使用道具 举报
墨染 发表于 2015-8-23 22:23
哪位大神帮忙解决下,
Exception in thread "main" java.util.NoSuchElementException
报这个异常 ...

修改一下类名,一定要一致。
回复 使用道具 举报

不是这个问题,中文的话编译都不通过,运行时报的异常
回复 使用道具 举报
   我觉得这题有毒
回复 使用道具 举报
墨染 发表于 2015-8-23 22:31
不是这个问题,中文的话编译都不通过,运行时报的异常

我们这也有个报这个错的,是类名和java文件名字不一致,不知道你是不是这个情况。。。
回复 使用道具 举报
漠陌 中级黑马 2015-8-23 22:43:14
8#
sc.close()把scanner关掉了 但下一次循环依然需要scanner,当然会异常
回复 使用道具 举报
没有导入把import java.util.Scanner;
回复 使用道具 举报
本帖最后由 徐鹏辰 于 2015-8-23 22:51 编辑

应该在sc.close();下面再加一个return;或者运用条件语句设置结束符,以结束循环。
因为只关闭扫描器,而循环还在进行,所以发生了Runtime异常。
回复 使用道具 举报
package com.itheima;


import java.util.Scanner;


public class Test32 {

        public static void main(String[] args){
               
                Scanner sc =null;
                while(true){
                        sc = new Scanner(System.in);
                        int num = sc.nextInt();
                        System.out.println(num);
                        sc.close();
                }
        }

}
这是完整代码,我把引用放到外面一样有这个异常
回复 使用道具 举报
漠陌 发表于 2015-8-23 22:43
sc.close()把scanner关掉了 但下一次循环依然需要scanner,当然会异常

Scanner sc = new Scanner(System.in)这句是在循环内的,每次循环都会重新创建对象的,而且我把sc.close()删掉编译就有警告说sc没关
回复 使用道具 举报
wangboxiao12345 发表于 2015-8-23 22:34
我们这也有个报这个错的,是类名和java文件名字不一致,不知道你是不是这个情况。。。 ...

报的是NoSuchElementException异常,
跟那个没关系,我名字也一样
回复 使用道具 举报
墨染 发表于 2015-8-23 22:55
Scanner sc = new Scanner(System.in)这句是在循环内的,每次循环都会重新创建对象的,而且我把sc.clos ...

那奇怪了 我这把sc.close()注释掉就没有异常了
回复 使用道具 举报
444
444
Exception in thread "main" java.util.NoSuchElementException
        at java.util.Scanner.throwFor(Scanner.java:862)
        at java.util.Scanner.next(Scanner.java:1485)
        at java.util.Scanner.nextInt(Scanner.java:2117)
        at java.util.Scanner.nextInt(Scanner.java:2076)
        at com.itheima.Test312.main(Test312.java:14)
这个是结果,第一次循环没有问题,第二次循环还没等键盘录入就报异常说NoSuchElementException没有找到元素,脑壳有点疼
回复 使用道具 举报
最好的解决方案是,把sc.close();放在while循环的外面,这样就可以一直输入,另外再循环内用条件语句设置结束标记, 以结束循环录入!!希望能够解决你的问题
回复 使用道具 举报
徐鹏辰 发表于 2015-8-23 22:49
应该在sc.close();下面再加一个return;或者运用条件语句设置结束符,以结束循环。
因为只关闭扫描器,而循 ...

加了return的话就只能循环一次了,加结束语句也没用,还没等输end就报异常了
回复 使用道具 举报
漠陌 发表于 2015-8-23 22:59
那奇怪了 我这把sc.close()注释掉就没有异常了

确实没问题了,不过会有警告,不知道怎么去掉,有个黄色叹号简直受不了,不过谢谢你,应该是这个问题
回复 使用道具 举报
漠陌 发表于 2015-8-23 22:59
那奇怪了 我这把sc.close()注释掉就没有异常了

加了句@SuppressWarnings("resource")这个,终于没事了,谢谢
回复 使用道具 举报
我这连异常都没有……

捕获.PNG (15.67 KB, 下载次数: 152)

捕获.PNG
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马