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()