黑马程序员技术交流社区
标题:
关于循环语句的一些问题。。请大神赐教。。谢谢
[打印本页]
作者:
yekong262
时间:
2014-1-2 22:50
标题:
关于循环语句的一些问题。。请大神赐教。。谢谢
本帖最后由 yekong262 于 2014-1-3 10:04 编辑
int x=0;
while (x<3)
{
int z=0; //这个变量z为什么只是自增一次。
for (int y=0;y<z ;y++ )
{
System.out.println("AAA");
}
x++;
z++; //为什么没有结果呢,不是应该打印2次AAA么??
System.out.println("z="+z);
复制代码
为什么没有结果。。请大师给说下这个是怎么运行的顺序。。。
为什么跟想下面的这个不一样呢
int x=0;
while (x<3)
{
int z=0;
z++;
for (int y=0;y<z ;y++ )
{
System.out.println("b.-++");
}
x++;
System.out.println("z="+z);
复制代码
作者:
道逍云心
时间:
2014-1-2 23:09
因为上面的z=0 不执行for语句才会这样
作者:
胡永城
时间:
2014-1-2 23:14
<b><font size="4">int x=0;
while (x<3)
{
int z=0; //每次循环,都重新初始化了一次z,所以每次都是z=0
for (int y=0;y<z ;y++ )//y=0-->y<0 false 循环停止
{
System.out.println("AAA");
}
x++;
z++; //自增之后,下面输出是z=1
System.out.println("z="+z);</font></b>
复制代码
<b><font size="4">int x=0;
while (x<3)
{
int z=0;//每次while循环都初始化z=0,
z++;//z自增后,z=1
for (int y=0;y<z ;y++ )//for只循环一次,y=0-->y<1 true-->输出-->y++(y=1)-->y<1 false 循环停止
{
System.out.println("b.-++");
}
x++;
System.out.println("z="+z);</font></b>
复制代码
作者:
wowo6288
时间:
2014-1-2 23:15
你上面第一个程序由于每循环一次while 里面的语句int z=0; 就又被置零所以就
for (int y=0;y<z ;y++ )
{
System.out.println("AAA");
}
这个语句就执行不了
而你的第二个程序在执行for循环之前z就执行了一次自加所以它就可以执行一次,执行一次的原因是因为和上面一样while循环一次又将z变为0所以z就只能加1
作者:
Faner
时间:
2014-1-2 23:16
本帖最后由 Faner 于 2014-1-2 23:17 编辑
int x=0;
while (x<3) //进入循环
{
int z=0; //这个变量z为什么只是自增一次。 我不清楚你所讲的自增 是怎么理解 此句仅仅是赋值
for (int y=0;y<z ;y++ ) // 这句不执行 因为 z=0 条件不满足 故不打印循环体的内容
{
System.out.println("AAA");
}
x++; 这个是X 自增 1
z++; //为什么没有结果呢,不是应该打印2次AAA么?? 这个是z 自增
System.out.println("z="+z); 会输出 z 自增后的数值 1
然后满足循环条件 继续循环 但是你在开头 有把 重新定义了一次Z =0 所以还是不执行For 语句
你第二个程序 因为
int z=0;
z++; //z=1
你for语句 判断满足 所以会执行
作者:
松子
时间:
2014-1-2 23:25
int x=0;
while (x<3)
{
int z=0; //while每循环一次,就重新定义了变量z,前一次循环中的自增和这个新初始化的变量z没关系
for (int y=0;y<z ;y++ )
{
System.out.println("AAA"); //每次z的值都是0,不满足y<z,所以每次都不走for循环,这里的语句执行不到
}
x++; //从0依次自增到1,2。while循环三次
z++; //每次都从0自增,自增后值为1
System.out.println("z="+z); //输出z=1,while 循环三次,这里输出三次
}
最后的结果是:
z=1
z=1
z=1
int x=0;
while (x<3)
{
int z=0;
z++;
for (int y=0;y<z ;y++ )
{
System.out.println("b.-++");
}
x++;
System.out.println("z="+z);
初始x值是0,
x<3为true,定义变量z,自增后值是1,进入for循环;y初始是0,小于z=1,执行里面的程序,输出:b.-++ 。
然后y自增变成1,不在满足y<z,for循环结束,x自增为1,然后输出z=1;
这是while的一次循环,接着还有两次循环,最后的结果是:
b.-++
z=1
b.-++
z=1
b.-++
z=1
作者:
李兴
时间:
2014-1-3 00:14
int x=0;
while (x<3)
{
int z=0; //这个变量z为什么只是自增一次。
for (int y=0;y<z ;y++ ) //这时y=0;z=0,所以y<z就是1<1逻辑判断为假,跳出循环,所以一次都不执行循环,也就不打印"AAA"了
{
System.out.println("AAA");
}
x++;
z++; //为什么没有结果呢,不是应该打印2次AAA么??
System.out.println("z="+z);
复制代码
作者:
未来希望
时间:
2014-1-3 00:23
因为z每次循环都初始化了,所以后面打印都只能看见z=1
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2