【问题标题】:2 Statements with OR in a do while loop2 do while 循环中的 OR 语句
【发布时间】:2015-06-23 14:36:16
【问题描述】:

如果pulls 为0 或时间为60 sek,我想结束这个Do While 循环。

但如果 pulls 为 0,则循环不会停止。

do{

    try
    {
        Thread.sleep(1000);
        sek++;
        System.out.println(sek);
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    db = new BdsPostgres( );
    db.select(Result.SET_1, "SELECT * FROM connection_overview WHERE leitung="+leitung+" AND  status='pull' ");
    db.naechsterDatensatz(Result.SET_1);

    anzahlPulls = db.leseZeilen(Result.SET_1);
    db.schliessen();

} while (anzahlPulls != 0 || sek != 60);

【问题讨论】:

    标签: java loops do-while


    【解决方案1】:

    您想使用 and 而不是 or ,请注意在 while 循环中,如果条件评估为真,它将继续循环,而不是结束它。

    所以实际上你的条件读作 - 而 (anzahlPulls 不为零) 或 (sek 不是 60) 继续循环。 (即当其中一个条件为真时继续循环)

    您实际上想使用and - 而(anzajlPulls 不为零)和(sek 不为60)都继续循环。 (即当其中一个条件为假时打破循环)

    示例代码-

    do{
    
                try
                {
                    Thread.sleep(1000);
                    sek++;
                    System.out.println(sek);
                }
                catch(Exception e)
                {
                    System.out.println(e);
                }
    
                db = new BdsPostgres( );
                    db.select(Result.SET_1, "SELECT * FROM connection_overview WHERE leitung="+leitung+" AND  status='pull' ");  
                    db.naechsterDatensatz(Result.SET_1);
    
                    anzahlPulls = db.leseZeilen(Result.SET_1);
                db.schliessen();
    
            }while (anzahlPulls != 0 && sek != 60);
    

    【讨论】:

      【解决方案2】:

      你的逻辑错了:

      NOT (A OR B) = (NOT A) AND (NOT B)

      【讨论】:

        猜你喜欢
        • 2020-05-07
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 2017-03-08
        • 1970-01-01
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多