for循环减少循环中的变量

时间:2019-07-29 08:41:30

标签: java

我想减少for循环中的变量循环。我能做什么? 当我loop--这样做时,它将永远循环发生

for (int loop=0;loop<number.length-1;loop++)
     {
         if (number[loop] != number[loop+1])
         {
             if (loop > 0 && freq_array[loop-1]== 1 )
             {  
                 loop--;  //this line 
                 continue;
             }
             freq=1;
             freq_array[loop]=freq;

         }
         else if (number[loop] == number[loop+1])
         {
             freq++;
             freq_array[loop]=freq;
         }
     }

@ cameron1024建议我使用while循环,但是无论如何它都会永远循环?

while (loop<number.length-1)
     {
         if (number[loop] != number[loop+1])
         {
             if (loop > 0 && freq_array[loop-1]== 1 )
             {  
                 continue;
             }
             else
             {
                freq=1;
                freq_array[loop]=freq;
                loop++;
             }

         }
         else 
         {
             freq++;
             freq_array[loop]=freq;
             loop++;
         }
     }

4 个答案:

答案 0 :(得分:0)

首先,阅读https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

第二,for循环只是带有装饰的while循环。例如:

for (<initializer>; <termination>; <increment>) {
    <loop body>
}

与以下项相同(范围略有变化):

<initializer>;
while (<termination>) {
    <loop body>
    <termination>
}

它永远循环的原因是您没有更改终止条件以匹配变量现在正在减小的事实。您的终止条件会检查loop不会高于某个值。而且由于loop仅会减少,因此始终满足该条件,因此循环将无限期地继续。

P.S。避免在Java中命名变量like_this,它们通常是likeThis

答案 1 :(得分:0)

如果您想倒数: 只需for(int i=10;i>=0;i--) int i = 10用10初始化一个新的int 下一部分是您的循环退出条件。 只要i> = 10,循环就会运行 最后,我-减少变量i

您的循环是无限的,因为循环和您的循环中的++一起陷入了一个循环中

int i = 1;
while(i < 10) {
    i++;
    i--;
} 

答案 2 :(得分:0)

我想你想要这个。

for (int loop = number.length - 1; loop > 0; loop--)

答案 3 :(得分:0)

while (loop<number.length-1)
     {
         if (number[loop] != number[loop+1])
         {              
            freq=1;
            freq_array[loop]=freq;
            loop++;


         }
         else 
         {
             freq++;
             if (loop > 0 && freq_array[loop-1]== 1 )
             {  
                 freq_array[loop-1]=freq;
             }
             else
             {
                freq_array[loop]=freq;
             }
             loop++;
         }
     }

我已经完成了,谢谢大家。

相关问题