为什么这段代码不能正常工作?

时间:2013-12-23 09:16:46

标签: java runtime-error

这部分应该在我的数据库中为TRAININFO表添加一列火车。我必须使用mysql。

所以在添加火车之前我必须看到一些限制。

  1. jTextField1.getText();火车票。不应超过6个字符,它应该是一个整数。
  2. jTextField2.getText(); TrainName。不应超过30个字符。
  3. jTextField10,jTextField12分别有Depttime和araivaltime。 它有5个字符,“hr:mn”所以我必须检查'hr'< = 24和'mn'< = 59。
  4. 如果jTextField3.getText()==0的值(ac1教练的数量),那么ac1教练(tfac1)的训练也应该是== 0.
  5. 记住这一点我试图编写代码。但它不起作用。

    当我运行它时会出现错误信息。

    请告诉我我错在哪里。

    堆栈跟踪:[Ljava.lang.StackTraceElement; @ e596c9

    好的,这是怎么回事:

    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));
    
    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";
    }
    try
    {
      Class.forName("java.sql.DriverManager");
    
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bvdb","root","enter");
    
    Statement stm=con.createStatement();
    
       int n=jTextField1.getText().trim().length();   
    int m=jTextField2.getText().trim().length();
    
    if( n<=6 && m<=30 && h1<=24 && h2<=24 && mins1<=59 && mins2<=59 )
    
    //This should check the constraints(1,2,3).if the condition is true the following statement will be executed ..else the catch block should be executed. But this doesn't seem to happen when i run the code. There is always an Exception raised.//
    
    {
    
    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);
    
    System.out.print("ADDED");
    
      }
    
    
        }
        catch (Exception e)
        {
    
    JOptionPane.showMessageDialog(this,"Enter valid details");
    
    }
    

2 个答案:

答案 0 :(得分:1)

如果s

-始终为!jCheckBox7.isSelected()。想一想,你有:

if(something) {
   ...
} else {
   s = ...;
}
if(something2) {
   ...
} else {
   s = ...;
}
...
if(somethingN) {
   ...
} else {
   s = "-";  //This will always be executed if !somethingN
}

您可能希望在if.. else if下方if而不是if

另请注意,通过撰写boolean来比较== true并不是一个好习惯。例如,如果您编写=而不是==,则可能会出现问题。只需撰写if(isTrue())而不是if(isTrue() == true)

答案 1 :(得分:-1)

基本上你需要将你的代码分成许多功能。这将使其更具可读性。

下面是如何构建代码的示例,而不是完整的代码。

public void InsertTrainInfo() {

    String runson = GetRunSon();
    Boolean validTime1 = IsTimeValid(jTextField10.getText());
    Boolean validTime2 = IsTimeValid(jTextField12.getText());
    String time1 = GetTheTime(jTextField10.getText());
    String time2 = GetTheTime(jTextField12.getText());

    String tfac1 = GetFact(jTextField13.getText());
    String tfac2 = GetFact(jTextField14.getText());
    String tfac3 = GetFact(jTextField15.getText());
    String tfsl = GetFact(jTextField16.getText());

    try {
        Class.forName("java.sql.DriverManager");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bvdb", "root", "enter");
        Statement stm = con.createStatement();

        if (jTextField1.getText().trim().length() <= 6 && jTextField2.getText().trim().length() <= 30 && validTime1 && validTime2) {
            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);

            ResetFOrm();
        }


    } catch (Exception e) {
        GetValidDetails();
    }
}

Boolean IsTimeValid(String timetext) {
    Boolean isOK = false;
    try {
        int h1 = Integer.valueOf(timetext.substring(0, 2));
        int mins1 = Integer.valueOf(timetext.substring(3, 5));
        isOK = (h1 <= 24 && mins1 <= 59);
    } catch (Exception e) {
        isOK = false;
    }
    return isOK;
}

String GetTheTime(String timetext) {
    // do some basic length checks
    return timetext.substring(0, 2) + timetext.substring(2, 3) + timetext.substring(3, 5);
}

String GetFact(String facttext) {
    String fact = facttext;
    if (Integer.valueOf(fact) == 0) {
        fact = "0";
    }
    return fact;
}

void ResetFOrm() {
    jTextField1.setEditable(true);
    jButton1.setEnabled(true);
    jButton2.setEnabled(false);
    jButton4.setEnabled(false);
    jTextField2.setEditable(false);
    jTextField9.setEditable(false);
    jTextField10.setEditable(false);
    jTextField11.setEditable(false);
    jTextField12.setEditable(false);
    jTextField13.setEditable(false);
    jTextField14.setEditable(false);
    jTextField15.setEditable(false);
    jTextField16.setEditable(false);
    jTextField3.setEditable(false);
    jTextField4.setEditable(false);
    jTextField5.setEditable(false);
    jTextField6.setEditable(false);
    jCheckBox1.setEnabled(false);
    jCheckBox2.setEnabled(false);
    jCheckBox3.setEnabled(false);
    jCheckBox4.setEnabled(false);
    jCheckBox5.setEnabled(false);
    jCheckBox6.setEnabled(false);
    jCheckBox7.setEnabled(false);
    jTextField1.setText("");
    jTextField2.setText("");
    jTextField3.setText("");
    jTextField4.setText("");
    jTextField5.setText("");
    jTextField6.setText("");
    jTextField7.setText("");
    jTextField8.setText("");
    jTextField9.setText("");
    jTextField10.setText("");
    jTextField11.setText("");
    jTextField12.setText("");
    jTextField13.setText("");
    jTextField14.setText("");
    jTextField15.setText("");
    jTextField16.setText("");


}

void GetValidDetails() {
    JOptionPane.showMessageDialog(this, "Enter valid details");
    jTextField9.setEditable(true);
    jTextField10.setEditable(true);
    jTextField11.setEditable(true);
    jTextField12.setEditable(true);
    jTextField13.setEditable(true);
    jTextField14.setEditable(true);
    jTextField15.setEditable(true);
    jTextField16.setEditable(true);
    jTextField2.setEditable(true);
    jTextField3.setEditable(true);
    jTextField4.setEditable(true);
    jTextField5.setEditable(true);
    jTextField6.setEditable(true);
    jCheckBox1.setEnabled(true);
    jCheckBox2.setEnabled(true);
    jCheckBox3.setEnabled(true);
    jCheckBox4.setEnabled(true);
    jCheckBox5.setEnabled(true);
    jCheckBox6.setEnabled(true);
    jCheckBox7.setEnabled(true);
    jTextField2.setText("");
    jTextField3.setText("");
    jTextField4.setText("");
    jTextField5.setText("");
    jTextField6.setText("");
    jTextField7.setText("");
    jTextField8.setText("");
    jTextField9.setText("");
    jTextField10.setText("");
    jTextField11.setText("");
    jTextField12.setText("");
    jTextField13.setText("");
    jTextField14.setText("");
    jTextField15.setText("");
    jTextField16.setText("");
    jCheckBox1.setSelected(false);
    jCheckBox2.setSelected(false);
    jCheckBox3.setSelected(false);
    jCheckBox4.setSelected(false);
    jCheckBox5.setSelected(false);
    jCheckBox6.setSelected(false);
    jCheckBox7.setSelected(false);


}

String GetRunSon() {
    String m = "-", t = "-", w = "-", th = "--", f = "-", st = "--", s = "-", runson;
    if (jCheckBox1.isSelected()) {
        m = "m";
    }

    if (jCheckBox2.isSelected()) {
        t = "t";
    }

    if (jCheckBox3.isSelected()) {
        w = "w";
    }

    if (jCheckBox4.isSelected()) {
        th = "th";
    }

    if (jCheckBox5.isSelected()) {
        f = "f";
    }

    if (jCheckBox6.isSelected()) {
        st = "st";
    }

    if (jCheckBox7.isSelected()) {
        s = "s";
    }

    runson = m + t + w + th + f + st + s;

    return runson;
}