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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

申锟

中级黑马

  • 黑马币:0

  • 帖子:48

  • 精华:0

© 申锟 中级黑马   /  2013-10-28 17:10  /  1386 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 申锟 于 2013-10-29 13:05 编辑
  1. <p>//用嵌套循环打印以下形状!
  2. /*

  3. *****
  4. ****
  5. ***
  6. **
  7. *

  8. */

  9. class  fordemo
  10. {
  11.         public static void main(String[] args)
  12.         {        
  13.                 int z = 5;
  14.                 for (int x=0; x<5; x++)
  15.                 {
  16.                         for (int y=0; y<z; y++)
  17.                         {
  18.                                 System.out.print("*");
  19.                         }
  20.                         System.out.println("*");
  21.                         z--;
  22.                 }
  23.         }
  24. }
  25. 为什么我的显示不对呢?</p><p>如下图所示:</p><p> </p><p> </p>
复制代码

TM截图20131028171014.png (3.15 KB, 下载次数: 3)

TM截图20131028171014.png

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

9 个回复

倒序浏览
你每行都多打印了一个,每行减掉一个*就可以了

回复 使用道具 举报
黄炳期 发表于 2013-10-28 17:19
你每行都多打印了一个,每行减掉一个*就可以了

多谢!

图片好模糊啊,咋的看不清呢,能不能复制我做错的那一行代码回复一下?

老是感觉不科学啊......

回复 使用道具 举报
黄炳期 发表于 2013-10-28 17:19
你每行都多打印了一个,每行减掉一个*就可以了

:lol另外,新人厚脸皮的求加分,第一次回答问题  http://bbs.itheima.com/forum.php ... 4262&pid=527802  
回复 使用道具 举报
请看一下代码,我只改了一处:
  1. class  ForDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int z = 5;
  6.                 for (int x=0; x<5; x++)
  7.                 {
  8.                                 for (int y=0; y<z; y++)
  9.                                 {
  10.                                                 System.out.print("*");
  11.                                 }
  12.        
  13.                                 //这句话是打印一个换行,改成这样就行了
  14.                                 System.out.println();
  15.                                 z--;
  16.                 }
  17.         }
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
正确代码如下:
class  fordemo
{
        public static void main(String[] args)
        {        
                int z = 5;
                for (int x=0; x<5; x++){
                        for (int y=0; y<z-x; y++){
                                System.out.print("*");
                    }
                    System.out.println();                        
                }
        }
}
首先解释一下,x代表的是行数,y代表的是列数,根据图形可以总结以下规律
一共打印了有5行所以x初始值定义为5,再看列第一行是5个*,第二行有4个*
以此类推下去总结到y=x-i;可以保证得到这个打印效果,但是为什么在第一个for循环,
为什么还要有这个语句呢?System.out.println();  是因为打印完要换行。
希望能帮助你,如果还不懂就qq聊。{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
申锟 中级黑马 2013-10-28 18:39:09
7#
本帖最后由 申锟 于 2013-10-28 18:44 编辑
wenbaoxing 发表于 2013-10-28 18:25
请看一下代码,我只改了一处:

这么弄应该是对了,我用你的代码运行还是原来的结果....不知道什么情况
回复 使用道具 举报
申锟 发表于 2013-10-28 18:39
这么弄应该是对了,我用你的代码运行还是原来的结果....不知道什么情况

不可能,我运行成功了,结果正确,
我想你一定是文件名混乱了,运行的字节码文件不是我的这个java文件编译出来的,
你把你的所有的.class文件都删了,重新编译我这个,再试试
回复 使用道具 举报
class  ForDemo
{
        public static void main(String[] args)
        {
              //  int z = 5; 其实不用定义z  直接利用x就行
                for (int x=0; x<5; x++)
                {
                                for (int y=x; y<5; y++)
                                {
                                                System.out.print("*");
                                }   
                                System.out.println("over");                }
        }
}就这样就可以了

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
根据你的代码,只需要把for (int y=0; y<z; y++) 这一行中的 y<z,换成y<z-1 即可。因为你在第23行多打了一个*,是在第一层循环与第二层中间打的,多打了一个,所以在第二层循环中要少打一个,那么就是y<z-1

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马