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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© {黑马} 中级黑马   /  2015-8-9 21:51  /  1012 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for (int i = 0; i < 6; i++)
                                {
                                for (int j = 1; j <= 5; j++)
                                {
                                if (i == 0 || i == 5||j==1||j==5)
                                {
                                System.out.print("*");
                                }
                                else
                                {
                                System.out.print(" ");
                                }
                                }
                                System.out.println();
            }

打印出  *****
            *     *
            *     *
            *     *
            *     *
            *****
不知道第一行是怎么打印出来的?求大神解释!

22 个回复

倒序浏览
i==0的时候,不管j==啥?都要打印*啊,从j==1打印到j==5;因为满足其中一个条件就可以啦,i==5的时候也是
回复 使用道具 举报
第一行不就是i==0的时候的打出来的吗
回复 使用道具 举报
godboy001 发表于 2015-8-10 08:43
i==0的时候,不管j==啥?都要打印*啊,从j==1打印到j==5;因为满足其中一个条件就可以啦,i==5的时候也是 ...

没弄明白
回复 使用道具 举报
一叶泛舟 发表于 2015-8-10 11:48
第一行不就是i==0的时候的打出来的吗

不会啊!不知道怎么出来的,条件是什么?能说的具体点不
回复 使用道具 举报
for嵌套循环啊
回复 使用道具 举报
i==0||i==5||j==1||j==5//第一个条件
意思是第一行或者第六行或者第一列或者第五列
System.out.println("*");//打印*
其余的时候
System.out.println("");//打印空格
第一行i==0时候第一个条件满足,打印*,i==0时候进入内循环j==1,2,3,4,5分别打印5个*,i++
此时i==1,j==1打印*,j==2第一个条件不满足,打印空格,j==3,==4,也是打印空格,j==5第一个条件满足,打印*
下面同理......
回复 使用道具 举报
Marx_D 中级黑马 2015-8-10 21:52:09
8#
class Rect {
        public static void main(String[] args) {
                printX(5);
                for (int x = 0; x < 4; x++) {
                        for (int y = 0; y < 1; y++) {
                                System.out.print("*   *");
                        }
                        System.out.println();
                }
                printX(5);
               
        }
        public static void printX(int x) {
                for (int a = 0; a < x; a++) {
                        System.out.print("*");
                }
                System.out.println();
        }
}

未命名图片.png (1.35 KB, 下载次数: 21)

未命名图片.png
回复 使用道具 举报
Marx_D 中级黑马 2015-8-10 21:57:24
9#
public static void main(String[] args) {
               
                for (int i = 1; i <= 6; i++) {
                        if (i == 1 || i == 6) {
                                System.out.println("*****");
                        } else {
                                System.out.println("*   *");
                        }
                }
}
回复 使用道具 举报
mmppp 中级黑马 2015-8-10 23:33:50
10#
帅哥没明白白第一行怎么输出来的吗?第一行的判断条件是if(i==0)||
这个||就是一个短路与的意思,满足第一个直接就是true,然后就执行下面的语句
而你看,这个第一次循环的时候,i=0啊 所以每次都是在if(i==0)的时候直接就print(*)了啊
懂了吗
回复 使用道具 举报
首先,哥们的格式有问题,层次不清晰,代码少还好分析,如果代码多了分析都分析不出来。要养成一种好习惯。如果不清楚你可以按着EditPlus默认格式来。
像这样
class  Noname1{
        public static void main(String[] args) {
                for (int i = 0; i < 6; i++){
                        for (int j = 1; j <= 5; j++){
                                if (i == 0 || i == 5||j==1||j==5){
                                        System.out.print("*");
                                } else {            
                                        System.out.print(" ");            
                               }               
                       }
                               System.out.println();
                  }
           }
}
正规的格式有助于解读代码,这样我们来分析第一行
首先是这是一个for循环嵌套,for循环嵌套的规律是“外循环”循环1次“内循环”循环6次(“6次”由j决定),
内循环要进行判断(i == 0 || i == 5||j==1||j==5),很显然,i=0时通过了内循环里面的if判断条(i是外循环的参数,内循环没有循环完第一遍循环前是不变的---------->>for循环嵌套的规律是“外循环”循环1次“内循环”循环6次(“6次”由j决定))
所以要运行6次System.out.print("*");  
这样第一行就会打印出来了。
还有必须要了解双或的定义
”||双或“:当符号(||)左边判断为真,符号右边程序将不再编译
祝你好运

回复 使用道具 举报

for (int i = 0; i < 6; i++)
                                {
                                for (int j = 1; j <= 5; j++)就是说i==0的时候第二个循环打印的5次
回复 使用道具 举报
      帅哥,首先,你先弄明白 if (i == 0 || i == 5||j==1||j==5)这个条件的意思,这个条件成立的情况是只要i==0、i==5、j==1,j==5这四种情况有一种成立就会进入System.out.print("*");
      所以在i==0时候,for (int j = 1; j <= 5; j++)这个循环进行了五次,五次都满足if的条件,所以打印了5个*
回复 使用道具 举报
for(int x = 1 ; x<=6 ; x++){
                        if(x>=2&&x<=5){
                                System.out.println("*   *");
                        }
                        else{
                                System.out.println("*****");
                        }
                  }
回复 使用道具 举报
地狱里的帅灵魂 发表于 2015-8-11 00:18
首先,哥们的格式有问题,层次不清晰,代码少还好分析,如果代码多了分析都分析不出来。要养成一种好习惯。 ...

谢谢!明白了
回复 使用道具 举报
同二楼观点
回复 使用道具 举报
程序第一次执行,i值为零,条件成立,所以打印5个*
回复 使用道具 举报
晚上没饭吃 发表于 2015-8-11 00:26
for (int i = 0; i < 6; i++)
                                {
                                for ( ...

谢谢,明白了
回复 使用道具 举报
地狱里的帅灵魂 发表于 2015-8-11 00:18
首先,哥们的格式有问题,层次不清晰,代码少还好分析,如果代码多了分析都分析不出来。要养成一种好习惯。 ...

非常感谢
回复 使用道具 举报
不管怎么要第一次i= 0 都满足吧 是吧 救你输出5次了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马