将字符串从JLabel

时间:2016-04-13 21:38:08

标签: java type-conversion parseint numberformatexception

我需要对JLabel中的数字应用兴趣方法。我可以设法从Jtextfield做到这一点,但由于某种原因我不能让它在JLabel上工作。

以下是按下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)

我已经研究过这个问题,但它似乎非常普遍,但由于某种原因,我无法对我的情况应用其他答案,因为我缺乏知识。

2 个答案:

答案 0 :(得分:1)

问题是£.,因为您正在尝试进行int转换。

改为使用浮点数:

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

这样你就可以得到十进制值,这对货币来说很有意义。

答案 1 :(得分:0)

好吧,从我可以看到你试图转换'£'这不是一个整数,所以你得到一个例外。您还有一个十进制值,整数无法处理,因此也会抛出异常。

public static int parseInt(String s) throws NumberFormatException
  

将字符串参数解析为带符号的十进制整数。字符串中的字符必须都是十进制数字,除了第一个字符可以是ASCII减号' - '('\ u002D')表示负值或ASCII加号'+'('\ u002B')表示正值。返回结果整数值,就像参数和基数10作为parseInt(java.lang.String,int)方法的参数一样。

     

参数:s - 包含要解析的int表示的String

     

返回:十进制参数表示的整数值。

     

抛出:NumberFormatException - 如果字符串不包含可解析的整数。

你能做什么,如果你知道一切都是'£xxxx.xx',你可以改变这一行

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

到这个

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

然后返回“1000.0”

public String substring(int beginIndex)
  

返回一个字符串,该字符串是此字符串的子字符串。子字符串以指定索引处的字符开头,并延伸到此字符串的末尾。   例子:

     

“unhappy”.substring(2)返回“happy”

     

“Harbison”.substring(3)返回“bison”

     

“空虚”.substring(9)返回“”(空字符串)

     

参数:beginIndex - 起始索引,包括。

     

返回:指定的子字符串。

     

抛出:IndexOutOfBoundsException - 如果beginIndex为负或大于此String对象的长度。