关于break和continue的题?

MaoZhua 2004-10-10 10:30:15
public class Test8{
public static void main(String[] args){
loop1:
for(int i=0;i<3;i++){
loop2:
for(int j=0;j<3;j++){
if(i==j){
break loop2;
}
System.out.println("i="+i+"j="+j+"");
}
}
}
}
运行输出:i=1 j=0 i=2 j=0 i=2 j=1
小弟不解为什么是i=1 j=0,不是说当i==j吗!应该都是零啊!
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwlwxx 2004-10-10
  • 打赏
  • 举报
回复
loop2 标志处是内循环,当i==j时,执行break loop2;退出内循环,但并没退出外循环,接着会执行会下一个i,也就是说i=0时,接着就j=0,i==j,退出内循环,接着i=1,j=1,i!=j,执行System.out.println("i="+i+"j="+j+"");输出i=1 j=0,其余的输出类推。
如果将break loop2;改为break loop1; 那当i==j时,会退出外循环,这个程序将没有任何的输出。

临远 2004-10-10
  • 打赏
  • 举报
回复
当i==j的时候,程序执行break loop2;跳出for循环到loop2处,开始下一次循环i++;
自然输出里没有i==j的项了!
这可是基础中的基础啊!
zmkun 2004-10-10
  • 打赏
  • 举报
回复
当i=0,j=0,break loop2.重新for i。i++后i=1,而j又重新int j=0,if(i==j)是判断是否相等,而不是赋值。
febchen 2004-10-10
  • 打赏
  • 举报
回复
break loop2执行后不是执行
System.out.println("i="+i+"j="+j+"");

它跳出了
for(int j=0;j<3;j++){
if(i==j){
break loop2;
}
System.out.println("i="+i+"j="+j+"");
}
循环

从而执行
for(int i=0;i<3;i++){...}
循环

只有i<>j时才会执行
System.out.println("i="+i+"j="+j+"");

micker 2004-10-10
  • 打赏
  • 举报
回复
因为i==j时就跳出内层循环了啊,外层循环开始下一次啊!
continue是结束一次循环,
而break是结束一层循环啊!
如:
for(int i=0;i<9;i++){
if(i==5) continue;
}
跳出后是执行i=6;

(int i=0;i<9;i++){
if(i==5) break;
}
跳出后是执行for以下的语句啊;
lovelymaomao 2004-10-10
  • 打赏
  • 举报
回复
因为当i==j时,就会break 跳出j这次循环,回到loop2:处,不会执行输出语句!再执行j++ 的循环,发现i!=j,才会执行输出语句!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧