簡體   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