2013-03-08 101 views
0

這是我必須完成的任務。程序編譯但不運行

有人能帶我走向正確的方向嗎?

該程序編譯但不會正常運行。

錯誤是InputMissmatch異常。

+2

「*錯誤是InputMissmatch異常。*」=>異常應指向引發異常的行。這應該有助於縮小調查範圍。 – assylias 2013-03-08 17:23:20

+2

你給了什麼投入?你輸入的是A,B,C還是0,1,2等? – 2013-03-08 17:23:23

+1

現在是熟悉調試器的好時機。 – radai 2013-03-08 17:24:03

回答

1

你的問題是,你輸入一個字母到一個浮動字段。 在你的程序你要求用戶輸入一個float:

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

而且您可以對其他選擇做同樣的事情。

+0

我這樣做了,並編輯了代碼。程序現在工作很好。我應該實現一個簡單的解決方案。我仍然在學習,並在思考我必須做的事情。謝謝 – TitanC 2013-03-08 17:51:54

+0

沒問題,不客氣。 – 2013-03-08 17:53:16

3

您正在獲取的錯誤意味着您正嘗試使用某種數據作爲另一種數據,在您的情況下,您可能正嘗試使用字符串作爲浮點數。

當使用掃描儀類中的下一個方法中的任何一個時,應首先確保有來自用戶的相應輸入。

爲了做到這一點,您需要使用方法。

你的問題是,在使用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 ... 
} 

你可以使用一個開關那裏,但似乎你還不是很fammiliar用java,所以我就講這些,下一次。