我正在使用Jframe作为我开发的库存系统的前端。我得到一个“java.lang.NumberFormatException:对于输入字符串:”6seater“”但变量被声明为一个字符串所以我有点混淆为什么会出现这个错误
private String Eng_num, Chasis_num, make, model, year_of_car,capacity,description;
private Integer status,Sup_id;
public void actionPerformed(ActionEvent e)
{
Insert I = new Insert();
try
{
Chasis_num = textField_1.getText();
Eng_num = textField_9.getText();
year_of_car = textField_10.getText();
model = textField_11.getText();
make = textField_12.getText();
capacity = textField_14.getText();//error is at this line
description = textField_16.getText();
Sup_id = Integer.parseInt(""+textField_13.getText().toString());
status = Integer.parseInt(""+textField_15.getText().toString());
I.insertVehicle(Eng_num, Chasis_num, make, model, year_of_car, capacity, Sup_id, status, description);
}
我甚至尝试放入.toString并仍然得到相同的错误
答案 0 :(得分:1)
capacity = textField_14.getText();
我认为这不是你例外的原因。
java.lang.NumberFormatException
仅在您尝试将String
解析为任何类型的Number
时发生。
所以,我猜,在您尝试将6seater
转换为Int
或其他数字格式时,会抛出此异常。
答案 1 :(得分:1)
我得到一个“java.lang.NumberFormatException:对于输入字符串:”6seater“”但该变量被声明为字符串,所以我有点混淆为什么会出现这个错误。
发生错误是因为您尝试将字符6seater
解析为整数。它不是整数。整数由字符0
到9
组成,前面可能有-
个字符。任何其他角色,价值将被拒绝......
(问题与getText()
返回的类型无关。问题是您为parseInt
方法提供的值。目前尚不清楚 where parseInt
来电是。堆栈跟踪会回答......但你没有提供。)
另外,你说:
capacity = textField_14.getText();//error is at this line
实际上,事实并非如此。该行不可能抛出NumberFormatException
。实际上,错误可能发生在以下一条线上:
Sup_id = Integer.parseInt(""+textField_13.getText().toString());
status = Integer.parseInt(""+textField_15.getText().toString());
或者在您正在调用的insertVehicle
方法中发生:
I.insertVehicle(Eng_num, Chasis_num, make, model,
year_of_car, capacity, Sup_id, status, description);
我还应该指出你在代码中犯了一些令人震惊的Java样式错误:
Java类,方法或变量名称不应包含_
作为分隔符。使用“骆驼案”。
Java变量名称绝不应以大写字母开头。
(如果教师没有为此扣除“样式”标记,他/她应该。如果您的代码审核人员没有选择这个,他们就不能正常工作。如果这个代码是打算的话要交付付费客户,他们有理由抱怨代码质量......)