用java编写:1,2,3,4四个数字可以组成多少不重复的三位数(每个三位数中不能出现重复的数字)

public class Exam1 {
public static void main(String [] are){
for(int i=1;i<=4;i++){
for(int j=1;j<=4 && j!=i;j++){
for(int k=1;k<=4 && k!=i && k!=j;k++){
int a=100*i+10*j+k;
System.out.print(a+" ");
}
}
}
}

}

这样写为什么是错的,求解释

// 1,2,3,4四个数可以组成多少个无重复数字的三位数
//考察多重循环
int count = 0;//计数器
for (int i = 1; i <= 4; i++) {//遍历个位的所有数
for (int j = 1; j <= 4; j++) {//遍历十位的所有数
for (int k = 1; k <= 4; k++) {//遍历百位的所有数
if (k != j && k != i && j != i) {//如果个位,十位,百位上的数都不相等
count++;//记录组成的个数
System.out.println(k * 100 + j * 10 + i);//打印组成后的三位数
}
}
}
}
System.out.println(count);//打印组成的三位数的个数
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-12
for(int j=1;j<=4 && j!=i;j++)中判断了j!=i才会继续执行,所以当i=1,j=1时直接跳过了循环从而使i++,建议将 j!=i的判断放在for中用if判断,第三层循环同理追问

哦。。。懂了,谢了

本回答被提问者采纳
第2个回答  2019-03-18
public class ShuziDemo {
//用1,2,3,4组成不重复的三位数
public static void main(String[] args) {
int i,j,k,sum=0;
for( i=1;i<=4;i++){
for( j=1;j<=4;j++){
if(j==i){
continue;
}
for( k=1;k<=4;k++){
if(k==i||k==j){
continue;
}
int a=100*i+10*j+k;
System.out.print(a+" ");
sum = sum+1;
}
}
}
System.out.println("");
System.out.print("一共有"+sum+"种");
}
}
第3个回答  2013-07-08
for (int j=0;i<=4 && j!=i;j++)
当i==j==1的时候,这条循环就结束了,不会出现j=2的情况了
直接进入i==2,j==1的情况,所以是错的追问

当i==j==1的时候,循环体不予执行,不是应该是j++嘛,为什么这句不执行了

第4个回答  2020-08-26
public void t1(){
int count = 0;
for(int i=1;i<=4;i++){
for (int j=1;j<=4;j++) {
for (int k =1;k<5;k++) {
if (i != j && i != k && j !=k) {
count++;
System.out.println(i + "" + j+""+k);
}
}
}
}
System.out.println(count);
}