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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-5 16:25  /  1528 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
public class num1 {
     public static void main(String args[]){
         for(int i=1;i<=4;i++)
         for(int j=1;j<=4;j++)
        for(int k=1;k<=4;k++)
            if(i!=j&&i!=k&&k!=j)
          System.out.println(“”+i+j+k);
      }
}
这代码 为什么要用三层循环,每层循环都有什么用?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
你不是要组合三位数吗?所以就要用三层嵌套,第一层确定百位数,第二层确定十位数,第三层确定个位数
回复 使用道具 举报
我顺着原作的代码去想原作的想法,看看这样子能自己理解吗?
  1. /*
  2. * 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
  3. * 可用的元素为4个{1,2,3,4},从中取出3个用来组成一个数。
  4. *
  5. *
  6. */
  7. public class num1 {
  8.      public static void main(String args[]){
  9.          for(int i=1;i<=4;i++)//百位:4选1
  10.          for(int j=1;j<=4;j++)//十位:4选1
  11.         for(int k=1;k<=4;k++)//个位:4选1
  12.             if(i!=j&&i!=k&&k!=j)//选出百十个位后,做逻辑:三个数不重复(百位!=十位&&....)
  13.           System.out.println(""+i+j+k);//输出三个数(百十个)
  14.       }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
public class num1 {
     public static void main(String args[]){
         for(int i=1;i<=4;i++)
         for(int j=1;j<=4;j++)
        for(int k=1;k<=4;k++)
            if(i!=j&&i!=k&&k!=j)
          System.out.println(“”+i+j+k);
      }
}

它的思想是:个位,十位,百位,三个位置的数各自从1到4循环一遍,为的就是让这三个位置遍历1到4,你看到最后的输出语句了吗?输出的结果就是 ijk ,i 就是百位了,j就是十位了,k就是个位了,if 语句是为了满足没有重复这个条件设置的,三层for循环 是这样的,k 做为最里面的循环 是个位数,遍历1 到4 ,j 是十位数,十位数的每个数都要让自己的个位从 1 到 4 遍历一遍,这样才能使所有的数都包含在范围内,同样的,i 是百位,每一个 i 都要让自己的十位从 1 到 4 遍历一遍,这样就有了,i 是最外层的循环,k 是最内层的循环,因为是个十百 三个位置,所以每个位置都要遍历一遍,这样就有了三层循环。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
public class num1 {
      public static void main(String args[]){
          for(int i=1;i<=4;i++)//百位数字从1到4中选择其中一个数
          for(int j=1;j<=4;j++)//十位位数字从1到4中选择其中一个数
         for(int k=1;k<=4;k++)//个位数字从1到4中选择其中一个数
             if(i!=j&&i!=k&&k!=j)//三位数中的每一位都不相同
           System.out.println(“”+i+j+k);//遍历完以后输出这个个位、十位、百位都不相同的数。
       }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

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