我已经编写了正确的代码但我没有在文本区域输出

时间:2017-05-24 14:12:43

标签: java

代码是用netbeans 8.2

编写的
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                    
  int a=Integer.parseInt(jTextField1.getText());
  int b=Integer.parseInt(jTextField2.getText());
  int c=a+b;
  jTextArea1.setText("addition is"+c);
}

并且错误有点像这样 - 请告诉wats错误 -

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "          3"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:569)
    at java.lang.Integer.parseInt(Integer.java:615)
    at addsf.jButton1ActionPerformed(addsf.java:95)
    at addsf.access$000(addsf.java:11)

还写了很多。 请指导。

2 个答案:

答案 0 :(得分:2)

您正在尝试解析一个整数,该整数应该只是数字,没有别的。试试这个:

jTextField1.getText().trim())

这将基本上删除字符串之前和之后的所有空格。 " 2 "变为"2"

但是,如果它不是一系列数字,也很容易出错,在这种情况下你应该使用try / catch块。

答案 1 :(得分:0)

异常消息告诉您,您的输入有问题:

  

java.lang.NumberFormatException:对于输入字符串:" 3"

如果查看字符串,可以发现3前面的空格,这是异常的原因。

int a = Integer.parseInt(" 3"); // leading white-space causes error
int b = Integer.parseInt("3"); // OK

要从输入中删除可能的空格,您可以使用方法String#trim();,它会返回新的String,而不会使前导或尾随空格。

int c = Integer.parseInt(" 3".trim());

或者你可以使用String.replaceAll(regex, replacement);替换所有匹配给定reular表达式的字符串序列。

int d = Integer.parseInt(" 3".replaceAll("\\s", "")); // \\s = white-space

考虑使用JFormattedTextField代替JTextFieldJTextField接受你写入的任何内容(带字母/空格的数字),而JFormattedTextField上你可以应用仅接受数字的掩码,因此用户将无法插入字母。这是一个example