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 开始?
展开
 我来答
白菜一颗
2015-01-21 · TA获得超过8916个赞
知道大有可为答主
回答量:3260
采纳率:69%
帮助的人:3730万
展开全部

举个例子,不知道是不是你所想要的

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循环就行了,用到的变量等也就跟着被恢复到初始了

申彬管幼
2020-10-23 · TA获得超过1066个赞
知道小有建树答主
回答量:1627
采纳率:100%
帮助的人:7.3万
展开全部
举个例子,不知道是不是你所想要的
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[][];

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶子的小情意
2015-01-21 · TA获得超过300个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:141万
展开全部
可以这么做 如果要结束的 可以直接break;结束,重头循环你可以将for (int i = 0; i < 10; i++) 中变量重新赋值就可以了,但是我推荐你是将for循环写成一个方法,然后条件不满足我就结束这个循环,在调用这个for循环
更多追问追答
追问
亲 帮我补充下框架好吗? 我的判断条件是在循环里面

public class A(){
for ……
if()……

break;
……

}
public static void main(String args[]){

}
追答
我也是醉了...........我又不熟悉你的代码.............不好补充诶
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
發呆碼字員
2015-01-21 · TA获得超过331个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:264万
展开全部
while(){

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式