0

这是我必须完成的任务。

有人可以引导我朝着正确的方向前进吗?

程序可以编译,但无法正确运行。

错误是 InputMissmatch 异常。

4

2 回答 2

3

您收到的错误意味着您正在尝试将某种数据用作另一种数据,在您的情况下,您可能正在尝试将字符串用作浮点数。

在使用 Scanner 类中的任何下一个方法时,您应该首先确保有来自用户的适当输入。

为此,您需要使用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 还不是很熟悉,所以我将它留到另一个时间。

于 2013-03-08T17:29:22.793 回答
1

您的问题是您在浮点字段中输入了一个字母。在您的程序中,您要求用户输入浮点数:

A = hope.nextFloat();

但是如果你输入字母“A”,你会得到一个异常,因为“A”不是一个浮点数,它是一个字符串。

解决您的问题的一种更简单的方法是,您只需读取用户从扫描仪输入的输入,而不是拥有所有选择字段,例如:

String choice = hope.next();

接下来在 if 语句中,检查字符串选择的值是否等于特定字母,例如

if (choice.equals("A")) {
        number4 = (number1 + number2 + number3);
        System.out.printf("Your results are:" + (number4));
    } 

你可以为你拥有的其他选择做同样的事情。

于 2013-03-08T17:37:48.883 回答