首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java嵌套循环初始化

Java嵌套循环初始化
EN

Stack Overflow用户
提问于 2013-08-22 05:01:30
回答 5查看 2.3K关注 0票数 5

我是java的新手,所以嵌套循环中有一些代码我不明白.

代码语言:javascript
复制
for(int i=0; i<3; i++){
 for(int j=1; j<3; j++){
   System.out.println(i + "" + j);
 }
}

它将运行:01,02,11,12,21,22

但当我变成这样:

代码语言:javascript
复制
int j=1;
for(int i=0; i<3; i++){
 for(; j<3; j++){
   System.out.println(i + "" + j);
 }
}

它变成了这样:01,02

有人能给我解释一下吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-22 05:02:51

循环之间的区别是,在顶部示例中,每次都重置j,但在第二个示例中,j保持其值。

在最上面的例子中,每次内部for循环启动时,j都被重新化为1,所以它将遍历1,2,3值。当j到达3时,它将退出循环,这就是为什么您将j值看作1然后2。这是每次外部循环运行时运行的,为您的i值提供0、1和2。

在下面的例子中,j永远不会被重置,因此它只会增加。第一次通过循环时,它会遍历1、2、3的值,然后退出循环,给出您已经看到的01,02值。因为它没有被重置,它保持为3,所以随着我的增加,内环将始终退出而不打印,给你你正在看到的输出。

要获得底部示例的相同输出,需要将值重置为1,这基本上就是for循环的第一个元素所做的。

代码语言:javascript
复制
int j = 1;
for(int i = 0; i < 3; i++) {
    j = 1; //reset the value each time through the outer loop
    for(; j < 3; j++) {
        System.out.println(i + "" + j);
    }
}
票数 7
EN

Stack Overflow用户

发布于 2013-08-22 05:15:21

在您的第一个代码

代码语言:javascript
复制
At case i=0

内环以条件j=1开始。

代码语言:javascript
复制
j=1 initialized **Condition satisfies** continue
j=2 incremented **Condition satisfies** continue
j=3 incremented **Condition Failed**    loop ends

内部首先执行它的完整循环,并且倾向于增加i现在的i=1。

再一次

代码语言:javascript
复制
j=1 initialized **Condition satisfies** continue
j=2 incremented **Condition satisfies** continue
j=3 incremented **Condition Failed**    loop ends

但是在您的第二个代码中,j被声明在外部,一旦j被设置为3,则保持不变。所以第二个循环的条件失败了。

在case i=0

代码语言:javascript
复制
j=1 declared    **Condition satisfies** continue
j=2 incremented **Condition satisfies** continue
j=3 incremented **Condition Failed**    loop ends

在case i=1

代码语言:javascript
复制
j=3 Already set**Condition Failed**    loop ends

循环失败

票数 6
EN

Stack Overflow用户

发布于 2013-08-22 05:02:53

它将打印01,02。原因是您没有重新初始化j,所以在内部循环的第二次迭代之后(当i仍然是0时,j是3,因此它会在外层循环的下一个迭代中失败)。

在for-循环声明中定义的变量的范围非常窄。这意味着,一旦循环完成所有的迭代,它们就会死掉(并且需要重新初始化)。在方法主体中定义的变量,正如您在第二个示例中所做的那样,将一直保持到方法本身结束。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档