黑马程序员技术交流社区
标题:
一个简单的循环问题,只是很疑惑
[打印本页]
作者:
赵文迪
时间:
2013-1-19 15:32
标题:
一个简单的循环问题,只是很疑惑
本帖最后由 赵文迪 于 2013-1-19 16:35 编辑
for (int i = 0 ; i <= 3; i ++)
{
for (int m = 0 ; m <= 3-i ; m ++)
{
System.out.print('*');
}
System.out.println('*');
}
为什么编译出来是
*****
****
***
**
不应该是
****
***
**
*
这个吗
这个输出过程究竟是怎样的
作者:
柴乔军
时间:
2013-1-19 15:54
当i=0时,里面的循环运行了4次没有错,是****,但是当跳出里面的for,外面还要再打个*并且换行,所以,打印结果就成为了*****
当=1时,里面循环了3次,***,外面的循环打印了一个*并换行,结果就是****,
以下类推,就是
*****
****
***
**
*
作者:
陈丽莉
时间:
2013-1-19 15:56
本帖最后由 陈丽莉 于 2013-1-19 15:57 编辑
因为数组的下标是从0开始的,所以要输出四行的话,可以是i从0到<4,当然像你写的,从0到<=3也是一样的。这是控制了输出四行。然后由于你的代码中,换行语句是自带一个*的,也就是说,内层循环控制每行输出的*时,要比预计的少一个,即不要加等号。改后代码如下:
public class Test
{
public static void main(String[] args)
{
for(int i=0;i<=3;i++)
{
for(int m=0;m<3-i;m++) //这里的m<=3去除了等号
{
System.out.print('*');
}
System.out.println('*');
}
}
}
当然也可以换行的语句不输出*,代码如下:
public class Test
{
public static void main(String[] args)
{
for(int i=0;i<=3;i++)
{
for(int m=0;m<=3-i;m++)
{
System.out.print('*');
}
System.out.println(); //这里改成单纯换行,不输出*
}
}
}
这两种改动的方法都能实现你的想法,希望有助于理解。附运行图:
000.png
(5.11 KB, 下载次数: 33)
下载附件
2013-1-19 15:56 上传
作者:
赵文迪
时间:
2013-1-19 16:20
谢谢。在线等的,论坛回复的就是快啊。搞明白了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2