代码是用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)
还写了很多。 请指导。
答案 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
代替JTextField
。 JTextField
接受你写入的任何内容(带字母/空格的数字),而JFormattedTextField
上你可以应用仅接受数字的掩码,因此用户将无法插入字母。这是一个example。