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

© 墨染 初级黑马   /  2015-8-23 22:14  /  1738 人查看  /  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 个回复

正序浏览
估计是你没导入包。。import java.util.Scanner;
回复 使用道具 举报
你有导入包了吗?
回复 使用道具 举报
sc.close();不能关的,你在和循环外面不用的时候再关吧
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
没看明白~~
回复 使用道具 举报
有导包吗?在最前面打:import java.util.Scanner;
回复 使用道具 举报
楼主很有幽默,有黄色叹号都受不了,这样子纠结啊。。。。
回复 使用道具 举报
没有导包吧!
回复 使用道具 举报
徐鹏辰 发表于 2015-8-23 23:09
Scannery类中的nextInt()方法只能接受int类型的数据,输入字符串当然不可以了
...

我是输入的数字,问题解决了,没有关Scanner,加了句这个@SuppressWarnings("resource")
回复 使用道具 举报
墨染 发表于 2015-8-23 23:10
代码会迭代的。。最后把sc.close(),给删了,加了@SuppressWarnings("resource")就没问题了,虽然我也不 ...

好吧,虽然我也不怎么懂,解决了就可以了
回复 使用道具 举报
漠陌 发表于 2015-8-23 23:08
我这连异常都没有……

会有个黄色感叹号,说Resource leak: 'sc' is never closed,说它没关。。。
加了@SuppressWarnings("resource")这个,不过我不知道什么意思
回复 使用道具 举报
徐鹏辰 发表于 2015-8-23 23:03
最好的解决方案是,把sc.close();放在while循环的外面,这样就可以一直输入,另外再循环内用条件语句设置结 ...

代码会迭代的。。最后把sc.close(),给删了,加了@SuppressWarnings("resource")就没问题了,虽然我也不知道这是什么意思
回复 使用道具 举报
墨染 发表于 2015-8-23 23:03
加了return的话就只能循环一次了,加结束语句也没用,还没等输end就报异常了 ...

Scannery类中的nextInt()方法只能接受int类型的数据,输入字符串当然不可以了
回复 使用道具 举报
没有这种元素异常
回复 使用道具 举报
我这连异常都没有……

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

捕获.PNG
回复 使用道具 举报
漠陌 发表于 2015-8-23 22:59
那奇怪了 我这把sc.close()注释掉就没有异常了

加了句@SuppressWarnings("resource")这个,终于没事了,谢谢
回复 使用道具 举报
漠陌 发表于 2015-8-23 22:59
那奇怪了 我这把sc.close()注释掉就没有异常了

确实没问题了,不过会有警告,不知道怎么去掉,有个黄色叹号简直受不了,不过谢谢你,应该是这个问题
回复 使用道具 举报
徐鹏辰 发表于 2015-8-23 22:49
应该在sc.close();下面再加一个return;或者运用条件语句设置结束符,以结束循环。
因为只关闭扫描器,而循 ...

加了return的话就只能循环一次了,加结束语句也没用,还没等输end就报异常了
回复 使用道具 举报
最好的解决方案是,把sc.close();放在while循环的外面,这样就可以一直输入,另外再循环内用条件语句设置结束标记, 以结束循环录入!!希望能够解决你的问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马