黑马程序员技术交流社区
标题:
程序不懂
[打印本页]
作者:
vipzh
时间:
2012-12-5 16:25
标题:
程序不懂
有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);
}
}
这代码 为什么要用三层循环,每层循环都有什么用?
作者:
坚持远方
时间:
2012-12-5 16:39
你不是要组合三位数吗?所以就要用三层嵌套,第一层确定百位数,第二层确定十位数,第三层确定个位数
作者:
黄嵘才
时间:
2012-12-5 17:25
我顺着原作的代码去想原作的想法,看看这样子能自己理解吗?
/*
* 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
* 可用的元素为4个{1,2,3,4},从中取出3个用来组成一个数。
*
*
*/
public class num1 {
public static void main(String args[]){
for(int i=1;i<=4;i++)//百位:4选1
for(int j=1;j<=4;j++)//十位:4选1
for(int k=1;k<=4;k++)//个位:4选1
if(i!=j&&i!=k&&k!=j)//选出百十个位后,做逻辑:三个数不重复(百位!=十位&&....)
System.out.println(""+i+j+k);//输出三个数(百十个)
}
复制代码
作者:
乔叶旭
时间:
2012-12-5 20:06
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 是最内层的循环,因为是个十百 三个位置,所以每个位置都要遍历一遍,这样就有了三层循环。
作者:
胡高德
时间:
2012-12-5 21:36
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);//遍历完以后输出这个个位、十位、百位都不相同的数。
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2