我正在寻找这两个问题的答案,因为任何一个都适用于我的代码。是否有一个函数或某些内容将完全重新启动for
循环或重新运行if
语句?对于for
循环,假设它是
for(int i = 0; i<=30; i++){
//code here
}
此时它已经到了i = 5
,我怎么能告诉它回到i = 0
?
对于if
语句,假设if
语句为:
if(i == 1 && j == 2){
//more code here
}
如果if
语句为if
,如何完全重新运行true
语句,如何在if
语句的末尾告诉它?
答案 0 :(得分:6)
TL; DR 听起来你想要一个while
循环或者可能是一个递归函数。
for
循环版本您无法重新启动if
语句,但您可以在for
循环中修改循环控制变量。只需执行i = 0;
并注意无限循环,如下所示:
for(int i = 0; i < 30; i++) {
// do stuff
if(someCondition) {
i = 0;
}
}
但是,这并不是一种非常好的风格,并且可能会导致一些难以找到的恶魔。人们不习惯在for
循环中寻找对循环控制变量的修改,因为它是你的那些东西之一。只是。唐&#39;吨。做。
while
循环版本因此,如果您打算在循环中修改for
,则应使用while
循环而不是i
循环。
示例:
int i = 0;
while(i < 30) {
// do stuff
if(someCondition) {
i = 0;
} else {
i++;
}
}
根据您真正想做的事情,您可能还会考虑创建一个函数并递归调用它:
function myFunction() {
// do stuff
if(someCondition) {
myFunction(); // this is the recursion
}
}
for(int i = 0; i < 30; i++) {
myFunction();
}
通过所有这些方法,注意无限循环!如果你不小心,它们很容易制作。
答案 1 :(得分:1)
小心这样做。你可能陷入一个你无法摆脱的循环中。
for(int i = 0; i<=30; i++){
//code here
if (some condition) {i=0;}
}
答案 2 :(得分:1)
通常,您可以针对您的问题使用continue
和break
语句,但他们不会初始化回i = 0
。
但是,对于您的问题,以下内容是合适的:
for(i=0; i<30; i++){
if(condition check) {i=0;}
// other code
}
答案 3 :(得分:-1)
所有其他答案均不正确,因为在第一次迭代中,i=0;
将i
设置为0
,然后在for循环中将i++
设置为{{1} },因此基本上您再也不会从1
开始,如果要检查数组i=0
,这将总是跳过第一个数组元素。
答案 4 :(得分:-1)
通过将 i 设置为 -1,您可以重新启动 for 循环,但请注意不要像将 i 设置为 -1 那样进入无限循环。