【发布时间】:2020-01-15 15:13:09
【问题描述】:
我正在尝试在 Vaadin 中将 String 转换为 int。代码如下:
TextField name = new TextField();
int num;
num = Integer.parseInt(String.valueOf(name.getValue()));
Paragraph greeting = new Paragraph("");
Button button = new Button("Result", event -> {
greeting.setText(" " + num * 500);
});
add(name, button, greeting);
这是错误:
There was an exception while trying to navigate to '' with the exception message 'Error creating bean with name 'com.gmail.ilim.MainView': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.gmail.ilim.MainView]: Constructor threw exception; nested exception is java.lang.NumberFormatException: For input string: ""'
【问题讨论】:
-
将
""插入Integer.parseInt函数时的预期结果是什么?不确定您想要做什么,但您正在尝试解析一个空字符串,这会导致NumberFormatException -
在消息的末尾有一个
java.lang.NumberFormatException: For input string: "",这意味着它不能将空字符串解析为int。这里name = new TextField();你创建了初始值为空的TextField,并在下一行中使用它作为输入,你不能期望那里有一个值。 -
您似乎希望这个
int num = Integer.parseInt(String.valueOf(name.getValue()));在event->{}的内部,所以您在名称中输入值,按下按钮,然后在问候语中得到 num*500,对吗?跨度> -
顺便说一句。打电话给
String.valueOf(name.getValue())毫无意义。name.getValue()已经返回一个字符串,所以从它解析字符串什么都不做。 -
除了按照 yuri 说的做之外,你还必须实现异常处理,也就是在
Integer.parseInt(..)行周围的 try-catch,它应该在按钮点击事件中。
标签: java spring string int vaadin