java 判断与循环嵌套、死循环问题
循环时可能会遇到一些状况,使系统会无限循环我在做八皇后问题想问:如果for循环到中间突然不满足条件时,如何退出,然后重头再次循环,直到获得的随机数满足了for循环的条件。...
循环时可能会遇到一些状况,使系统会无限循环
我在做八皇后问题 想问:如果for循环到中间突然不满足条件时,如何退出,然后重头再次循环,直到获得的随机数满足了for循环的条件。
是不是if 嵌套 for ?
我的代码
for(int m=0;m<7;m++){
int c = new Random().nextInt(7);
int d = new Random().nextInt(7);
while(a[c][d] != 100){
System.out.println("**");
c = new Random().nextInt(7);
d = new Random().nextInt(7);
}
a[c][d] = 1;
…………
}
假如for循环到 m=5时,数组a中不再有100,如何使for循环重新从m=0 开始? 展开
我在做八皇后问题 想问:如果for循环到中间突然不满足条件时,如何退出,然后重头再次循环,直到获得的随机数满足了for循环的条件。
是不是if 嵌套 for ?
我的代码
for(int m=0;m<7;m++){
int c = new Random().nextInt(7);
int d = new Random().nextInt(7);
while(a[c][d] != 100){
System.out.println("**");
c = new Random().nextInt(7);
d = new Random().nextInt(7);
}
a[c][d] = 1;
…………
}
假如for循环到 m=5时,数组a中不再有100,如何使for循环重新从m=0 开始? 展开
5个回答
展开全部
举个例子,不知道是不是你所想要的
test:
for (int i=0;...){
for(int j=0;...){
if(不满足){
break; //结束整个 j 循环
continue; //结束 j 的本次循环,判断进入下一次循环
break test; //结束整个 i 循环
continue test; //结束 i 的本次循环,判断进入下一次循环
}
}
}
追问
不是,我想要重新循环。而且循环中的赋值 还要恢复到循环刚刚开始时。
追答
test:
while(true){
int a=0, b=0;;
for (int i=0;...){
for(int j=0;...){
if(不满足){
continue test; //结束 i 的本次循环,判断进入下一次循环
}
}
}
}
像这样的话,你就是在while循环刚开始的位置初始化,后面for循环去使用,一旦需要全部初始化重新开始就continue test;重新开始while循环就行了,用到的变量等也就跟着被恢复到初始了
展开全部
举个例子,不知道是不是你所想要的
test:
for (int i=0;...){
for(int j=0;...){
if(不满足){
break; //结束整个 j 循环
continue; //结束 j 的本次循环,判断进入下一次循环
break test; //结束整个 i 循环
continue test; //结束 i 的本次循环,判断进入下一次循环
}
}
}
test:
for (int i=0;...){
for(int j=0;...){
if(不满足){
break; //结束整个 j 循环
continue; //结束 j 的本次循环,判断进入下一次循环
break test; //结束整个 i 循环
continue test; //结束 i 的本次循环,判断进入下一次循环
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-21
展开全部
if放在循环里进行判断,如果想直接退出,用break;如果想从头在开始循环,可以将for中的循环次数i或j或其他的记次数的变量在if中重置为初始值就OK,可以重新在开始循环
追问
亲,我想从头开始。问题我刚刚做了补充。
但我第次(错误的)一循环时会给数组元素赋值。怎样可以让之前的赋值也恢复原样呢?
追答
很简单,将数组清空就可以了 有方法的:比如你的这个二维数组,直接这样 a[][]=new int[][];至于长度跟以前一样就ok,这样是一个新的数组,也就相当于清空了当然实在if判断中,直接在循环内的话,他会无限的初始化,就没用了:
for(...){
if(..){
m=0;
a[][]=new int[][];
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以这么做 如果要结束的 可以直接break;结束,重头循环你可以将for (int i = 0; i < 10; i++) 中变量重新赋值就可以了,但是我推荐你是将for循环写成一个方法,然后条件不满足我就结束这个循环,在调用这个for循环
更多追问追答
追问
亲 帮我补充下框架好吗? 我的判断条件是在循环里面
public class A(){
for ……
if()……
break;
……
}
public static void main(String args[]){
}
追答
我也是醉了...........我又不熟悉你的代码.............不好补充诶
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(){
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询