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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李复安 于 2013-6-9 13:41 编辑

大家好:
       刚开始学习毕老师的基础视频,在讲到第三天07-for(嵌套)语句中,有一个问题没有说出答案。以下是我写的代码,用了两次并列形式的for嵌套语句,编译和运行结果正确。不知道有没有别的方法,在for语句中嵌套、嵌套、再嵌套。。。。
       这个问题对大家来说可能比较简单,可是对我来说难,不要笑话我。
       谢谢!


/*
需求:输出如下图形:
*****
****
***
**
*
*
**
***
****
*****
2.思路:(1)用一次for语句嵌套,输出前五行图形。
  (2)再一次for语句嵌套,输出后五行图形。
*/
class ForForDemo7
{
      public static void main(String[] args)
      {
            for (int a = 5; a>=1; a--)//用一次for语句嵌套,输出前五行图形。
            {
                  for (int b = a; b>=1; b--)
                  {
                        System.out.print("*");
                  }
                  System.out.println();//用于换行。
             }
            for (int a = 5; a>=1; a--)//再一次for语句嵌套,输出后五行图形。
            {
                   for (int b = a; b<=5; b++)
                   {
                        System.out.print("*");
                   }
                   System.out.println();//用于换行。
             }
      }
}

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 鼓励下 万事开头难 入门了 好说了.

查看全部评分

10 个回复

倒序浏览
多谢刘凯哥鼓励,一定、
回复 使用道具 举报
李复安 发表于 2013-6-8 23:22
多谢刘凯哥鼓励,一定、

楼主,我知道的好像没有吧,你可以把两个并列的for循环封装成一个方法,就是看成一个整体就可以了.在实际开发中,最多就用两个for循环嵌套,如果你用了3层for循环的话,经理会找你拼命的.....两个for循环的话也挺好理解的,老毕说是大圈套小圈,我觉得这样不好理解,你可以把它想象成钟表的时针和分针,外层for循环遍历一个,里面的for循环就遍历一遍,就像时针走一个小时,分针走一圈...这样感觉好理解一些...

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
本来想递归调用,发现有点难度,就写了一个简单点的,仅供参考哈,看不懂没关系,之后慢慢会学到,我现在在复习基础的,和你看的差不多,哈哈:
import java.util.*;
class  sjSort
{
public static void main(String[] args)
{
  System.out.println("请输入1或者5,分别代表*在首行出现的个数,分别以回车结束");
  Scanner num = new Scanner(System.in);   //获取键入的信息,这个方法有很多,这种是其中之一
  int n1=num.nextInt();                      //把键入的数字赋值给n1和n2
  int n2=num.nextInt();
  if(n1==1||n1==5)                      //为了代码的健壮性,而专门写的提示,判断书否输入错误
  {
   if (n2==1||n2==5)
   {
     Sort(0,n1);                            //调用2次Sort方法
     Sort(0,n2);                            //如果嫌麻烦可以直接在Sort()里输入数字,就不用这一大串的代码了
   }else
   System.out.print("第二行输入错误");
  }
  else
   System.out.print("第一行输入错误");
}
public static void Sort(int x, int y)//主要看这里,一个大的FOR循环里用IF分隔成了2个小的FOR循环,用来判断用户输入的到底是哪一个,从而根据键入的数字正确输出
{
   for (int i=x;i<5 ;i++ )
   {
    if(y==1)                                  //因为之前判断过了,所以这里的Y一定是1或5之中的一个
    {
     for (int j=i;j>=0 ;j--)
     {
      System.out.print("*");
     }
     System.out.println();
    }
    else if (y==5)
    {
     for (int j=i;j<5 ;j++)
     {
      System.out.print("*");
     }
     System.out.println();
    }
        }  
}   
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很详细

查看全部评分

回复 使用道具 举报
本帖最后由 张俊迪 于 2013-6-9 01:49 编辑

看见上面的伙计说用递归,我就用这种方法做了一个,感觉代码还比较少,虽然没有for循环了但是都是递归
public class Practice8 {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                print(5,true);
        }
        public static void print(int a,boolean b){//a表示一行打印几个*,b表示打印的顺序,当b为true时由长到短,为false时由短到长
                if(!b&&a==6)//判断结束标志
                        return;
                printLine(a);//打印一行的*
                if(b){     //根据b来判断a是增加还是减小   
                        a--;
                }else{
                        a++;
                }
                if(a==0){//当a为零时证明已打印完第一种因此换方向
                        b=false;
                }else{
                    System.out.println();
                }
                print(a,b);
        }
        public static void printLine(int a){
                if(a==0)
                        return;
                sop();
                a--;
                printLine(a);
        }
        public static void sop(){
                System.out.print("*");
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
楼主你的思想是这样的对吗?
同一个类中,两个能够打印星星的方法,一个是尖朝上,一个是尖朝下
回复 使用道具 举报
吴刚 发表于 2013-6-9 00:17
楼主,我知道的好像没有吧,你可以把两个并列的for循环封装成一个方法,就是看成一个整体就可以了.在实际开 ...

比喻非常形象,多谢多谢、就把两个并列的for循环封装
回复 使用道具 举报
李征 发表于 2013-6-9 00:47
本来想递归调用,发现有点难度,就写了一个简单点的,仅供参考哈,看不懂没关系,之后慢慢会学到,我现在在 ...

真的看不懂,珍藏一下以后看,谢谢啦
说句题外话,你的名字和我姐的一样,太巧了、
回复 使用道具 举报
王林涛 发表于 2013-6-9 08:26
楼主你的思想是这样的对吗?
同一个类中,两个能够打印星星的方法,一个是尖朝上,一个是尖朝下 ...

嗯,是滴是滴
回复 使用道具 举报
张俊迪 发表于 2013-6-9 01:47
看见上面的伙计说用递归,我就用这种方法做了一个,感觉代码还比较少,虽然没有for循环了但是都是递归
publ ...

看见你们的回答,真心感觉要加快学习进度,不然要落后了、
多谢俊迪兄的回答、
回复 使用道具 举报
李复安 发表于 2013-6-9 13:38
看见你们的回答,真心感觉要加快学习进度,不然要落后了、
多谢俊迪兄的回答、 ...

不客气,共同进步,加油!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马