这个NumberFormatException是什么意思?

时间:2013-12-25 07:00:41

标签: java exception-handling numberformatexception

java.lang.NumberFormatException: For input string: ":"  

这是什么意思? 如果我运行代码(下面),我会收到上述错误。我是初学者。 和..

  stacktrace:[Ljava.lang.StackTraceElement;@e596c9

代码:

try
{
    Class.forName("java.sql.DriverManager");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bvdb","root","enter")
            Statement stm=con.createStatement();
    String m="-",t="-",w="-",th="--",f="-",st="--",s="-",runson;
    if(jCheckBox1.isSelected()==true){
        m="m";}

    if(jCheckBox2.isSelected()==true){
        t="t";}
    if(jCheckBox3.isSelected()==true){
        w="w";}
    if(jCheckBox4.isSelected()==true){
        th="th";}
    if(jCheckBox5.isSelected()==true){
        f="f";}
    if(jCheckBox6.isSelected()==true){
        st="st";}
    if(jCheckBox7.isSelected()==true){
        s="s";}
    runson= m + t + w + th + f + st + s ;
    int h1=Integer.valueOf(jTextField10.getText().substring(0,2)
            int mins1=Integer.valueOf(jTextField10.getText().substring(3,5));
    int h2=Integer.valueOf(jTextField12.getText().substring(0,2));
    int mins2=Integer.valueOf(jTextField12.getText().substring(2,3));
    Boolean x=jTextField10.getText().substring(2,3).equals(":");
    Boolean y=jTextField12.getText().substring(2,3).equals(":");
    String time1=jTextField10.getText().substring(0,2)+jTextField10.getText().substring (2,3)+jTextField10.getText().substring(3,5);
    String time2=jTextField12.getText().substring(0,2)+jTextField12.getText().substring(2,3)+jTextField12.getText().substring(3,5);
    String tfac1=jTextField13.getText();
    String tfac2=jTextField14.getText();
    String  tfac3=jTextField15.getText();
    String tfsl=jTextField16.getText();
    if(Integer.valueOf(jTextField3.getText())==0){
        tfac1="0";
        if(Integer.valueOf(jTextField4.getText())==0){
            tfac2="0";}
        if(Integer.valueOf(jTextField5.getText())==0){
            tfac3="0";}
        if(Integer.valueOf(jTextField6.getText())==0){
            tfsl="0";}
        if(y==true&&x==true&&jTextField1.getText().trim().length()<=6&&jTextField2.getText().trim().length()<=30&&h1<=24&&h2<=24&&mins1<=59&&mins2<=59){
            String q="INSERT INTO TRAININFO VALUE ("+jTextField1.getText()+",'"+jTextField2.getText()+"','"+jTextField9.getText()+"','"+time1+"','"+jTextField11.getText()+"','"+time2+"','"+runson+"',"+tfac1+","+tfac2+ ","+tfac3+","+tfsl+","+jTextField3.getText()+","+jTextField4.getText()+","+jTextField5.getText()+","+jTextField6.getText()+");";

            stm.executeUpdate(q);

            JOptionPane.showMessageDialog("ADDED");
        }
    }
    catch (Exception e){
        e.printStackTrace();
    }

4 个答案:

答案 0 :(得分:2)

这意味着您无法将String ":"转换为Number,如integerdouble

见下面的链接

http://docs.oracle.com/javase/7/docs/api/java/lang/NumberFormatException.html

根据java docs

  

抛出以指示应用程序已尝试转换a   字符串到其中一个       数字类型,但字符串没有适当的格式。

答案 1 :(得分:0)

这意味着您要将":"转换为不允许的number。因此,你得到了例外。 更好地展示您的代码

答案 2 :(得分:0)

您获得更快回复的最佳方式&amp;回答你的问题是发布你的代码。 您无法将String转换为数字。

答案 3 :(得分:0)

正如其他人所说,Java无法将“15:”转换为数字,因为“:”不是数字。最可能的原因是这样一条线:

int h1 = Integer.valueOf(jTextField10.getText().substring(0,2));

你将时间字符串拆分为错误的索引,这就是你在其中有“:”的原因。

<强>更新

分割像“12:35:09”这样的时间字符串的更好方法是使用String.split()

String timeString = "12:35:09";
String[] parts = timeString.split(":");
boolean validTimeString = parts.length == 3;

上面的代码将产生以下值:

timeString = "12:35:09"
parts[0] = "12"
parts[1] = "35"
parts[2] = "09"
validTimeString = true

String.split(DELIMITER)会将字符串拆分为 N + 1 字符串,其中 N 是目标字符串中DELIMITER的出现次数。