[英]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.