英文:
Continue parts of nested loop if condition of one loop is not met at exactly the beginning
问题
我有一个恰好有3层嵌套的循环。如果输入恰好为0,则应继续执行其他for循环,所以普通的嵌套循环行不通。
我尝试想出解决方法,但我不知道如何使它工作。任何类型的解决方案都可以。
我有3个输入,它们是某种“乘数”。如果值为0,执行仍然应该继续。
示例:
int coni=2, conj=-2, conk=0;
//中间值,用于指示是否为负数
//从起始值计算得出,但我会摆脱这些代码
int ti=1, tj=-1, tk=0;
for(int i=0; i<(int)Math.abs(coni); i++){
for(int j=0; i<(int)Math.abs(conj); j++){
for(int k=0; i<(int)Math.abs(conk); k++){
//永远不会被执行
function(i*ti, j*tj, k*tk);
}
}
}
我想要发生的事情:
function(0, 0, 0);
function(0, -1, 0);
function(1, 0, 0);
function(1, -1, 0);
英文:
I have exactly 3-level nested loop. If an input is exactly 0, the execution of other for loops should continue so normal nested loop won't work
I tried thinking of a workaround but i have no idea how would i make it work. Any kind of solution is welcome
I have 3 inputs that are some kind of "multipliers". If the value is 0, the execution should still continue.
Example:
int coni=2, conj=-2, conk=0;
//intermediate values that tell should it be negative or positive
//calculated from the beginning values, but ill get rid of the code
int ti=1,tj=-1,tk=0;
for(int i=0;i<(int)Math.abs(coni);i++){
for(int j=0;i<(int)Math.abs(conj);j++){
for(int k=0;i<(int)Math.abs(conk);k++){
//will never get executed
function(i*ti,j*tj,k*tk);
}
}
}
What i want to happen:
function(0,0,0);
function(0,-1,0);
function(1,0,0);
function(1,-1,0);
答案1
得分: 1
在你的 for loop
中,将 <
替换为 <=
将帮助你实现你想要的效果。
for(int i=0;i<=(int)Math.abs(coni);i++){
for(int j=0;i<=(int)Math.abs(conj);j++){
for(int k=0;i<=(int)Math.abs(conk);k++){
//永远不会被执行
function(i*ti,j*tj,k*tk);
}
}
}
这将会执行:
function(0,0,0)
英文:
Setting <=
instead of <
in your for loop
will help you achieve what you want.
for(int i=0;i<=(int)Math.abs(coni);i++){
for(int j=0;i<=(int)Math.abs(conj);j++){
for(int k=0;i<=(int)Math.abs(conk);k++){
//will never get executed
function(i*ti,j*tj,k*tk);
}
}
}
This will execute
function(0,0,0)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论