我需要对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)
我已经研究过这个问题,但它似乎非常普遍,但由于某种原因,我无法对我的情况应用其他答案,因为我缺乏知识。
答案 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对象的长度。