A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李小锋 中级黑马   /  2012-11-27 20:05  /  1818 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李小锋 于 2012-11-27 22:27 编辑

以下代码段的输出结果是?
  1. public class MyClass{
  2.         public static void main(String argv[]){
  3.                 int i;
  4.                 int j;
  5.                 outer: for (i = 1; i < 3; i++)
  6.                         inner: for(j = 1; j < 3; j++) {
  7.                                         if (j == 2)
  8.                                         continue outer;
  9.                                         System.out.println("Value for i = " + i + " Value for j = " +j);
  10.   }
  11.         }
  12. }
复制代码
有哪位能给我解答一下咯。

点评

这花括号看的我凌乱啊。。  发表于 2012-11-27 23:44
i,j是局部变量必须显示赋值,必须有初始值,面方法是正确的只要接受String数组即可  发表于 2012-11-27 20:46

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

6 个回复

正序浏览
陈重 初级黑马 2012-11-28 17:55:42
7#
这代码写的,括号都凌乱了。写代码跟写文章一样,不求华丽,但求通顺。希望楼主在学好知识的同时,学习下代码的缩进。
回复 使用道具 举报

对于你的程序我在上面标示一下:
public class MyClass{
        public static void main(String argv[]){
                int i;
                int j;
                outer: for (i = 1; i < 3; i++)
                        inner: for(j = 1; j < 3; j++) {
                                        if (j == 2)
                                        continue outer; //这里使用continue 表示结束本次循环,进入下次循环 ,你后面跟着是outer表示结束了外层循环,然后再重新循环
                                        System.out.println("Value for i = " + i + " Value for j = " +j);
  }
        }
}
流程步骤:当i=1:
                      j=1时,输出的是Value for i = 1   Value for j = 1;
                       j=2时,结束了内层循环,重新从外层循环开始,
                 当 i=2时
                        j=1;这时输出的是 Value for i = 2   Value for j = 1;
                       j=2时,结束了本次循环
               这时返回到外层循环,i的值=3,这时不满足判断条件,结束了整个循环

这里主要是学的是是 continue的使用  它是结束本次循环,然后进入下次循环,如果后面有标识符的话,它就作用于标识符对应的循环,否则它之作用于,它所在的循环体内

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 赞一个!

查看全部评分

回复 使用道具 举报
李小锋 发表于 2012-11-27 22:12
加了括号还是不行

class Test3
{
        public static void main(String[] args)
        {        
                int i,j;
                outer: for (i=1;i<3 ;i++ )
                {
                        inner: for (j=1;j<3 ;j++ )
                        {
                                if(j==2)  continue outer;
                                                  System.out.println("Value for i = " + i + " Value for j = " +j);
                        }
                }
        }
}
回复 使用道具 举报
本帖最后由 李小锋 于 2012-11-27 22:26 编辑
林剑 发表于 2012-11-27 20:47
if (j == 2)
  continue outer;//这句话的作用是内循环执行到j==2时跳出内循环
最后输出结果应该是:Valu ...


可以了,谢谢
回复 使用道具 举报
1.首先说明一下“continue;”的功能:continue语句只用在循环中,用来结束本次循环,但不退出循环;
2.分析程序,当i=1时,执行能循环,j=1, System.out.println("Value for i = " + 1+ " Value for j = " +1);
j=2,continue outer;这个位置执行的意思是:结束外部i=1的循环,但不退出循环;i递增1,回到外部循环入口转入下一次循环;
按照以上如此循环,也就得到了如下结果:
Value for i = 1Vale for j = 1
Value for i = 2Vale for j = 1

3.如果将“continue outer;”改为“break outer;”结束外部循环i=1的情况,直接结束外部循环,继续执行for循环下面的代码。
结果可想而知。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 林剑 于 2012-11-27 20:50 编辑

if (j == 2)
  continue outer;//这句话的作用是内循环执行到j==2时跳出内循环
最后输出结果应该是:Value for i = 1 Value for j = 1
                              Value for i = 2 Value for j = 1
还有你代码有问题,外循环outer的循环体没少了{}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马