Java:在循环内部的if之后的无限循环

时间:2014-03-06 00:42:02

标签: java loops if-statement infinite

所以我有一个环绕着一个循环和一个if语句。然而,在运行程序时,它会退出内部循环(按计划),然后它会失败if语句(也按计划),使用else语句,这是一个简单的打印。

我/想/将要发生的事情(在if失败的情况下),重新启动到原始内部循环 - 因此外部循环。但相反,在if语句失败后,它开始反复循环“phrase2”。

以下是简化代码:

int x = 1;
int y = 1;
int i = 0;
while(i == 0)
{
    while(<condition that is false>)
    {
        System.out.println("phrase1");
        a = input.nextInt();
        b = input.nextInt();        
    }
    if(<condition that is false>)
    {
        i = 1;
    }
    else
    {
        System.out.println("phrase2");
    }
}

感谢您的帮助,无论如何!

编辑: 为了强调...... 怎么了: 无限循环喷出“短语2”。 我想要的: 在执行else之后,我想再次进入内循环。

3 个答案:

答案 0 :(得分:0)

您的控件永远不会输入以下if语句

if(<condition that is false>)
{
    i = 1;
}

您可能需要调整条件,使其进入上述if块。在if语句中引入System.out.println以进行调试

答案 1 :(得分:0)

无论你在内循环中使用什么条件,只要确保它是真的。

else
{
    System.out.println("phrase2");
    // SET THIS TO TRUE: <condition that is false>
}

这样,内循环将再次触发。

答案 2 :(得分:0)

看起来你有一些你可能想要运行的代码,除非出现问题,然后你想回去重试。我通常使用的成语看起来像

boolean needToRetry;
do {
    needToRetry = false;
    // do whatever
    if (somethingWentWrong) {
        needToRetry = true;
        // set this at any point where you find you will need to go back
    }
} while (needToRetry);

重要的是你需要在每次循环开始时重置你的标志(needToRetry)。 (P.S.使用breakcontinue还有其他方法可以做到这一点,尽管我个人不喜欢使用continue。)