繁体   English   中英

程序编译但无法运行

[英]Program compiles but does not run

这是我必须完成的任务。

有人可以指引我正确的方向吗?

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

错误是InputMissmatch异常。

您得到的错误意味着您正在尝试将某种数据用作另一种数据,就您而言,您可能正在尝试将String用作浮点数。

在Scanner类中使用下一个方法时,首先应确保用户输入了适当的信息。

为此,您需要使用has方法。

您的问题是,在使用Scanner.nextFloat();之前,您是否不检查输入是否为正确的float。

您应该执行以下操作:

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不太熟悉,因此我将其再留一遍。

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

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));
    } 

您可以为其他选择做同样的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM