程序不应该传递值

问题描述 投票:-1回答:1

我的Java程序应该创建一个具有宽度和长度的Rectangle对象。它允许用户设置并获取长度和宽度,并获取矩形的面积和周长。此功能工作正常。

RectangleTest类应该测试Rectangle类的功能。它应该显示一个选项菜单,编号为1到7(含)。当用户选择数字7时,程序终止(应终止)。当用户输入其他任何数字(1-6)时,它将执行Rectangle类中的某个方法(应正确执行),并询问用户是否要继续(应正确执行)。如果用户说“ false”,程序应该以再见消息终止,如果为“ true”,则显示菜单以继续进行。而是,无论用户输入什么内容,它都会再次显示菜单,并显示InputMismatchException错误。

这里是项目链接:https://repl.it/@The_LinkLink/AdventurousBumpyLegacysystem。粘贴的代码太多,所以我做了一个repl项目。查看Rectangle.java和RectangleTest.java。

由于某种原因,当它第二次运行菜单方法时,它将用户的响应传递给用户再次运行程序(对或错),作为对菜单方法的响应(应为1到7的整数) 。怎么了?

java java.util.scanner inputmismatchexception
1个回答
0
投票

查看代码的58至60行:

System.out.print("Would you like to do something else? (answer true or false): ");
answer = input.hasNext();
return answer;

重要的是,当他们没有按照自己的想法去做时,仔细检查您对所用事物的理解。查看文档会有所帮助-RTFM是首字母缩写词,这是有原因的。根据官方文档,Scanner.hasNext()用于检查扫描仪是否还有其他输入,而不是像您所使用的那样检查来自扫描仪的输入。

您收到一个InputMismatchException,因为hasNext()返回一个布尔值(真或假),而不是您期望的那样,不是字符串“ true”或字符串“ false”。

input.hasNext()更改为input.nextLine()将使您摆脱此问题。

[将来,当您收到错误消息时,请注意它。它会准确告诉您代码的哪一行导致了错误。然后,您可以去看看那些界限,即使您自己不能解决问题,也可以至少明智地将人们引导到问题发生的地方。

© www.soinside.com 2019 - 2024. All rights reserved.