简体   繁体   中英

while(true) loop only executes once

I wrote a piece of code which should be executed until the condition is satisfied. I have 2 classes using the same structure. In one of them while (true) loop executes as expected; in the other class the program exits the loop after the first recursion.

        protected static boolean flag = true;
        private static int value=0;
        private static int limit=10;
        .
        .
        .

        public static int method(){

            if (limit-value <=0)
            {

            ...
            }

            else {
            while(flag) {
                if (limit-value > 0 ) {

                    *the action I want to perform until the condition is satisfied*

                    value++; 

                }

                else if (limit==value)
                {
                    flag = false;
                } 
                return int_Value;
            }

        }
    }
    return int_Value;
}

I expect the while(true) loop to be executed until the condition is satisfied (which is more than once).

通过一些清理缩进,很明显 while 循环包含一个无条件return

if you look at your code the while loop goes like this

 while(flag) {
    if (limit-value > 0 ) {

        *the action I want to perform until the condition is satisfied*

             value++; 

    }

    else if (limit==value)
    {
            flag = false;
    } 
    return int_Value;
}

after executing either if or if else statement there is a return int_value statement which is causing the problem

Although I did debugging I couldn't see it in the first place. I performed another debug session after @user3437460 's suggestion, so I was able to find out:

It seems like an additional return statement was used!(return int_Value;), the one after else if block. So, the program returns a value and never goes back into the loop. After deleting the first return statement, program runs just fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM