如何修复欲望输入为字符串的java.lang.NumberFormatException错误?

时间:2015-11-08 01:53:10

标签: java swing

我正在使用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并仍然得到相同的错误

2 个答案:

答案 0 :(得分:1)

capacity = textField_14.getText();

我认为这不是你例外的原因。

java.lang.NumberFormatException仅在您尝试将String解析为任何类型的Number时发生。

所以,我猜,在您尝试将6seater转换为Int或其他数字格式时,会抛出此异常。

答案 1 :(得分:1)

  

我得到一个“java.lang.NumberFormatException:对于输入字符串:”6seater“”但该变量被声明为字符串,所以我有点混淆为什么会出现这个错误。

发生错误是因为您尝试将字符6seater解析为整数。它不是整数。整数由字符09组成,前面可能有-个字符。任何其他角色,价值将被拒绝......

(问题与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变量名称绝不应以大写字母开头。

(如果教师没有为此扣除“样式”标记,他/她应该。如果您的代码审核人员没有选择这个,他们就不能正常工作。如果这个代码是打算的话要交付付费客户,他们有理由抱怨代码质量......)