这是我必须完成的任务。
有人能引导我朝着正确的方向前进吗?
程序编译但无法正常运行。
错误是InputMissmatch异常。
答案 0 :(得分:3)
您获得的错误意味着您尝试将某种数据用作另一种数据,在您的情况下,您可能尝试将String用作浮点数。
使用Scanner类中的任何 next 方法时,首先应确保用户有合适的输入。
为此,您需要使用 has 方法。
您的问题是在使用Scanner.nextFloat()之前,您没有检查输入是否是正确的浮动;
你应该这样做:
if (hope.hasNextFloat())
{
// Code to execute when you have a proper float,
// which you can retrieve with hope.nextFloat()
}
else
{
// Code to execute when the user input is not a float
// Here you should treat it properly, maybe asking for new input
}
这应该足以让你指出正确的方向。
另外,请查看Scanner api文档以获取更多详细信息。
修改强>
此外,您要求用户输入字符(或字符串):“A”,“B”等...,但您试图将它们与浮点数进行比较。那是错的,你应该将它们与字符串或字符进行比较,如下所示:
if (hope.hasNextString())
{
if (hope.nextString().equals("A"))
{
// Code for option "A"
}
else if (hope.nextString().equals("B"))
{
// Code for option "B"
}
else ...
}
你可以在那里使用一个开关,但似乎你还不熟悉java,所以我会再把它留下来。
答案 1 :(得分:1)
您的问题是您正在将字母输入浮点字段。 在你的程序中,你要求用户输入一个浮点数:
A = hope.nextFloat();
但是如果你输入字母“A”,你将得到一个例外,因为“A”不是浮点数,它是一个字符串。
解决问题的一种更简单的方法是,只需读取用户从扫描仪输入的输入,而不是拥有所有选项字段:
String choice = hope.next();
接下来在if语句中,检查字符串choice中的值是否等于特定字母,例如
if (choice.equals("A")) {
number4 = (number1 + number2 + number3);
System.out.printf("Your results are:" + (number4));
}
你可以为其他选择做同样的事情。