Java 输入不匹配异常,通过执行第17课编程
正在执行以下程序,但遇到了问题。我得到了这个线索:Java 输入不匹配异常,通过执行第17课编程,java,java.util.scanner,Java,Java.util.scanner,正在执行以下程序,但遇到了问题。我得到了这个线索: Exception in thread "main" java.util.InputMismatchException 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(Un
Exception in thread "main" java.util.InputMismatchException
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 Doing.LessonSeventeen.main(LessonSeventeen.java:23)
第8行还说“资源泄漏‘键盘’从未关闭”
包做;
导入java.util.Scanner;
公共课第十七课{
公共静态void main(字符串[]args){
Scanner keyboard=new Scanner(System.in);//不关闭stdin没有问题,JVM将为您处理它,并且没有资源泄漏
显然,您在IDE中内置了一些静态分析功能,用于查找扫描仪(可能是任何可关闭的东西都会触发此操作),以关闭它,而不是找到它,并为您生成警告
实现以使其具有close方法
keyboard.close()
还要将抛出异常
添加到主方法签名中,因为close抛出IOException。同样,stdin实际上不会发生这种情况。Scanner抛出IOException是因为它处理所有类型的输入流,并且在某些情况下,网络问题可能会中断
这会让你的警告消失
至于StActTrack,你在键盘上输入什么?你的扫描仪正在调用NEXTITE,所以它正在期待一个整数输入。如果你把一个小数点放在那里,它将无法处理它。考虑将你的成绩类型改为
。
仅仅因为数字中有一个小数点并不是使用浮点类型的充分理由。浮点适合某些类型的计算。对于不涉及计算的情况,并且您不希望输入的内容与程序显示的内容有任何差异的情况,。没有错误,然后您发布一个e错误。您是否搜索了警告的确切消息?资源泄漏…从未关闭
。线程“main”中出现异常。这不是错误吗?“键盘从未关闭”所以请关闭它。你真的需要我们吗?我不知道如何关闭它。D:对不起,对不起,对不起,请不要再提我之前的评论,非常感谢。我通过将GPA更改为keyboard.nextDouble()修复了另一个错误@Scinerio:我知道似乎双倍应该是自然的选择,因为它们是语言中固有的,但实际上处理BigDecimal更容易,惊喜更少。我正试图引导你远离这里的问题:-)。所以任何时候我都认为我应该使用双倍,只需使用BigDecimal?我可以做到,谢谢。@Scinerio:补充道澄清
keyboard.close()