【问题标题】:I keep on getting a infinite loop in my for loop with nested if我继续在嵌套 if 的 for 循环中获得无限循环
【发布时间】:2021-03-28 01:04:41
【问题描述】:

这是我的 while 循环,然后我们有一个带有嵌套 if 的 for 循环,问题是 if 中的代码不断循环并使程序崩溃。当我运行我的代码并添加一个现有的 ID 号来验证它时,它会继续发送它存在的错误消息,我无法把手放在循环的问题所在

while (exist>=0){
    exist=0;
    for(int i=0; i<idArr.length; i++){
        if(AddID.getText().equals(idArr[i])){
            exist=1;
            JOptionPane.showMessageDialog(null, "ID already exists!", "Clinic System", JOptionPane.ERROR_MESSAGE);
            AddID.setText("");               
            addName.setText("");
            DOBADD.setText("");
            Address.setText("");                              
            PhoneNum.setText("");
            GenderAdd.setText("");
            break;                                
        }                            
    }
    if(exist==0) {
        try{    
        myconn = DriverManager.getConnection(url, user, password);
        //mystatShop = myconShop.createStatement();
        //myresShop = mystatShop.executeQuery("INSERT INTO patient_test VALUES (?, ?)");
        String SQL= "INSERT INTO PATIENT_INFO  VALUES (?,?,?,?,?,?)";
        PreparedStatement pstate = myconn.prepareStatement(SQL);
        pstate.setString(1,AddID.getText());
        pstate.setString(2, addName.getText());
        pstate.setString(3, DOBADD.getText());
        pstate.setString(4, Address.getText());                             
        pstate.setString(5, PhoneNum.getText());
        pstate.setString(6, GenderAdd.getText());

        pstate.executeUpdate();
        JOptionPane.showMessageDialog(null,"Insertion Successful");
        AddID.setText("");               
        addName.setText("");
        DOBADD.setText("");
        Address.setText("");
        GenderAdd.setText("");
        PhoneNum.setText("");

        myconn.close();
        }
        catch(Exception e){
            System.out.println(e.getMessage());
        }
        break;
    }
}

【问题讨论】:

    标签: java sql database swing jframe


    【解决方案1】:

    while 参数表示 while (exist&gt;=0)
    所以根据代码存在值总是等于或大于0。所以循环永远不会结束。
    像这样放
    while (exist&gt;0)
    我也看不出使用嵌套循环的理由。您只能使用 for 循环遍历数组。

    【讨论】:

    • Did it 但仍然不断发出错误消息 JOptionPane.showMessageDialog(null, "ID already exists!", "Clinic System", JOptionPane.ERROR_MESSAGE);
    • 我尝试初始化存在=1 和 0 但仍然出现相同的错误
    • 为什么你需要一个嵌套循环呢?正如我所见,不需要循环。只需使用 for 循环一次遍历 idArr[] 数组。
    • 谢谢你,我删除了while循环,它工作了
    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2011-12-01
    • 2015-04-16
    相关资源
    最近更新 更多