2016-04-13 32 views
0

我需要將興趣方法應用於JLabel中的某個數字。我可以設法從Jtextfield做到這一點,但由於某種原因,我無法讓它在JLabel上工作。將字符串轉換爲JLabel中的可讀int

這裏是按下一個JButton時啓動代碼:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
    interest(Integer.parseInt(balanceLabel.getText())); 

balanceLabel是標籤,我想一起工作的名稱。

這裏是返回的錯誤,當我按下按鈕:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "£1000.0" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 

我研究這個問題,現在看來,這是非常普遍的,但由於某種原因,我不能其他的答案適用於我的情況因爲我缺乏這方面的知識。

+1

您必須在將字符串解析爲Integer之前消除£符號 – esprittn

+0

任何想法如何在它讀取JLabel中的內容時擺脫它? –

+0

令人驚異的答案。我很欣賞你們爲幫助我而投入的時間和知識。據說,我確實使用了「Float」而不是「@」作爲@dambros的說法。其他用戶提供的來自千層麪和防水布的答案都應該考慮到類似的問題,因爲它們的信息非常豐富。再次感謝。 –

回答

1

問題是£.,因爲你正在嘗試一個int轉換。

使用浮點數來代替:

Float.parseFloat(balanceLabel.getText().substring(1)); 

這樣你就可以擁有十進制值,這是有道理的貨幣。

+0

很好的回答!現在已經很清楚了。我不敢相信我沒有想到那個DARN DECIMAL POINT!我認爲這只是讓它顯示爲錯誤的「英鎊」。感謝您的時間和知識。這包括幫助解答此問題的所有其他用戶。再次感謝 –

0

那麼,從我可以看到你正試圖轉換'英鎊'這不是一個整數,所以你得到一個例外。你也有一個十進制值,這是一個整數無法處理的,所以這個異常也被拋出。

public static int parseInt(String s) throws NumberFormatException 

將字符串參數作爲有符號的十進制整數。字符串中的字符必須全部爲十進制數字,但第一個字符可能是ASCII減號' - '('\ u002D')以指示負值或ASCII加號'+'('\ u002B')。表示一個正值。返回結果整數值,就像參數和基數10作爲parseInt(java.lang.String,int)方法的參數一樣。

參數:s - 包含INT表示一個待分析的字符串

返回:十進制參數表示的整數值。

拋出:NumberFormatException - 如果字符串不包含可分析的整數。


你可以做的,如果你知道,一切都將是「£其中xxxx.xx,」是你可以把這個信號改變

interest(Integer.parseInt(balanceLabel.getText())); 

這個

interest(Double.parseDouble(balanceLabel.getText().substring(1)); 

然後返回「1000.0」

public String substring(int beginIndex) 

返回一個字符串,該字符串是此字符串的子字符串。子字符串以指定索引處的字符開頭,並延伸到此字符串的末尾。 實例:

「愁」 .substring(2)返回 「快樂」

「哈比森」 .substring(3)返回 「野牛」

「空虛」。子字符串(9)返回「」(一個空字符串)

參數:beginIndex - 開始索引(含)。

返回:指定的子字符串。

拋出:IndexOutOfBoundsException - 如果beginIndex爲負數或大於此String對象的長度。

+0

是的,我知道英鎊本質上是問題的原因。我嘗試使用你的代碼行,我得到了同樣的錯誤,但沒有數字中的英鎊。例如_對於輸入字符串:「1000.0」_ –

+0

對不起,我的錯,我在看食物之前先看了這個。我做了一個編輯,基本上1000.0不能是一個整數,它是一個Double,所以你應該把「Integer」改爲「Double」。希望這有助於我改變我的代碼來反映這一點。 讓我知道是否還有其他問題。 發生異常是因爲「該字符串不包含可分析的整數」。 您的興趣將不得不提供Double值,否則您將不得不在小數點後襬脫額外的值,但似乎您確實需要小數值,因此請使用雙精度值。 – XaolingBao

+0

非常好。感謝您的時間和知識。我真的很欣賞它的內心! –