2015-11-08 114 views
0

我使用Jframe作为我开发的库存系统的前端。我得到一个“java.lang.NumberFormatException:对于输入字符串:” 6seater“”但是变量声明为一个字符串,所以我有点困惑,为什么这个错误就要到了如何解决欲望输入是字符串的java.lang.NumberFormatException错误?

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

考虑提供一个[可运行示例](https://stackoverflow.com/help/mcve)你的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这会减少混淆和更好的反应 – MadProgrammer

+1

没有堆栈跟踪和完整的代码,几乎不可能给你一个准确的答案。请遵循MadProgrammer的链接并在此之后正确设置代码格式。 – Frakcool

+1

也给你的textFields更适合的名字,可能'textField_14'的文本不是'6seater'但是'6seater'是'textField_13'的文本,但是这些都是我的猜测,所以请发布一个[MCVE ](https://stackoverflow.com/help/mcve)。谢谢! :)我们只是希望你能帮助我们帮助你。 – Frakcool

回答

1
capacity = textField_14.getText(); 

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

java.lang.NumberFormatException只有当您尝试将String解析为任何种类的Number时才会发生。

所以,我猜,这个例外是抛出某处,你试图将6seater转换为Int或其他一些数字格式。

+1

提供完整的代码,我们会尽力帮助你。 – Doc

1

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

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

(问题是无关与getText()回报。问题是,你是给到parseInt方法的值的类型。目前尚不清楚。其中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变量名不应该以大写字母开头。

(如果教师未扣除对于这种“风格”的痕迹,他/她应该。如果你的代码评审不挑这件事,他们没有正确地做他们的工作。如果此代码被打算交付给付费客户,他们将有理由抱怨代码质量...)

+0

哇我真的不知道这些规则感谢人 – Deezy

+0

谷歌的“Java风格指南”,并选择一个。 Java的标识符风格规则非常普遍。 –

相关问题