循环体内,Scanner定义的参数sc,加上sc.close();语句执行时报错
import java.util.Scanner; public class GuessDemo { public static void main(String[] args) { System.out.print("猜一个介于1到10之间的数字:"); int number=(int)(Math.random()*10+1); int guess; do { Scanner sc=new Scanner(System.in); guess=sc.nextInt(); sc.close(); System.out.println("guess="+guess); if(guess<number) { System.out.print("太小,请重新输入:"); }else if(guess>number){ System.out.print("太大,请重新输入:"); } }while(number!=guess); System.out.println("恭喜您,您猜对了!"); } }
为什么在循环体加上sc.close();在执行的时候为什么会报错?(去除sc.close();正常执行)
报错信息如下:
猜一个介于1到10之间的数字:1
guess=1
太小,请重新输入: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.imooc.part5.GuessDemo.main(GuessDemo.java:13)
19
收起
正在回答
1回答
同学你好,sc.close()表示将Scanner对象关闭了,再次使用时就会报这个错误。这里建议将Scanner对象定义在循环外,避免重复创建,sc.close()写在最后。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星