Java 输入 null 时出现 NumberFormatException 错误
Java NumberFormatException error for input null
当我 运行 我的代码如下:
import javax.swing.JOptionPane;
public class HelloWorld{
public static void main(String[] args){
String dataStr=JOptionPane.showInputDialog("enter");
if (dataStr!= null){
int data=Integer.parseInt(dataStr);
JOptionPane.showMessageDialog(null,"Ok"+data);
}
}
}
当我输入null时,终端显示如下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at HelloWorld.main(HelloWorld.java:9)
我觉得加上条件后dataStr!=null
应该不会出现这样的错误。
我的代码有什么问题吗?
从
更改条件
if (dataStr!= null){
至
if (dataStr!= null && (!dataStr.trim().isEmpty())){
您的问题是从以下位置返回的字符串:JOptionPane.showInputDialog("enter");
可以是以下三种情况之一:
null
(如果对话框被取消)
- 一个有效的 int 数字字符串 -- 那么你的 Integer.parseInt 就可以工作了
- 或任何其他非数字字符串。
不输入字符串直接按回车,返回值为空字符串,""
,属于第三类。解决问题的最佳方法是 1) 在 try/catch 块中解析字符串,从而捕获所有无效输入,或者 2) 强制用户仅输入数字数据,例如使用 JSlider 或 JSpinner。
例如:
if (dataStr != null){
try {
int data=Integer.parseInt(dataStr);
JOptionPane.showMessageDialog(null,"Ok"+data);
} catch (NumberFormatException nfe) {
// notify user that input was invalid
}
}
当我 运行 我的代码如下:
import javax.swing.JOptionPane;
public class HelloWorld{
public static void main(String[] args){
String dataStr=JOptionPane.showInputDialog("enter");
if (dataStr!= null){
int data=Integer.parseInt(dataStr);
JOptionPane.showMessageDialog(null,"Ok"+data);
}
}
}
当我输入null时,终端显示如下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at HelloWorld.main(HelloWorld.java:9)
我觉得加上条件后dataStr!=null
应该不会出现这样的错误。
我的代码有什么问题吗?
从
更改条件if (dataStr!= null){
至
if (dataStr!= null && (!dataStr.trim().isEmpty())){
您的问题是从以下位置返回的字符串:JOptionPane.showInputDialog("enter");
可以是以下三种情况之一:
null
(如果对话框被取消)- 一个有效的 int 数字字符串 -- 那么你的 Integer.parseInt 就可以工作了
- 或任何其他非数字字符串。
不输入字符串直接按回车,返回值为空字符串,""
,属于第三类。解决问题的最佳方法是 1) 在 try/catch 块中解析字符串,从而捕获所有无效输入,或者 2) 强制用户仅输入数字数据,例如使用 JSlider 或 JSpinner。
例如:
if (dataStr != null){
try {
int data=Integer.parseInt(dataStr);
JOptionPane.showMessageDialog(null,"Ok"+data);
} catch (NumberFormatException nfe) {
// notify user that input was invalid
}
}