2016-04-13 35 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

非常好。感谢您的时间和知识。我真的很欣赏它的内心! –