1,2,3,4 组成一个三位数,数字不可重复,请问能组成多少个数字?JAVA编写 我写的程序出来还有重复数字。。

public class yu{
public static void main(String[]args){
int count=0;
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
for(int k=1;k<5;k++){
if((i!=j)&&(j!=k)&&(k!=i))
count++;
System.out.print(i*100+j*10+k+" ");

}
}
}
System.out.println("共有三位数:"+count+"个");
}
}

采用三级嵌套循环,当有重复数字时,采用continue跳出单次循环,这样获得的就不会有重复出现,同时用count进行了计数,并记录了程序的运行时间,有兴趣的可以测试一下另一种直接用if(i!=j&& i!=k && j!=k)的运行时间。比较一下效率

public static void main(String[] args) {

int count=0;

long time1=System.currentTimeMillis();

for (int i = 1; i <=4; i++) {

for (int j = 1; j <=4; j++) {

if (i==j) {

continue;

}

for (int k = 1; k <=4; k++) {

if (i==k ||j==k) {

continue;

}

count++;

System.out.println("组成的三位数有:"+(i*100+j*10+k));

}

}

}

long time2=System.currentTimeMillis();

System.out.println("一共可以组成:"+count+"个三位数");

System.out.println("执行时间"+(time2-time1));

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-24
同学呀 要有if后面加大括号的习惯 你这个不加大括号当然会出问题 你这个不加大括号 他只判断了count++
第2个回答  推荐于2016-12-01
最后if判断的时候应该加上{ } 不加的话 你最后count结果是对的 但是输出是把所有的三位数都输出了 所以又重复的 试一下
public class yu{
public static void main(String[] args){
int count=0;
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
for(int k=1;k<5;k++){
if((i!=j)&&(j!=k)&&(k!=i)){
count++;
System.out.print(i*100+j*10+k+" ");
}
}
}
}
System.out.println("共有三位数:"+count+"个");
}
}本回答被提问者和网友采纳
第3个回答  2013-01-24
注意到你if后面没有打括号,试试这样:
if((i!=j)&&(j!=k)&&(k!=i))
{
count++;
System.out.print(i*100+j*10+k+" ");
}
第4个回答  2013-01-24
if((i!=j)&&(j!=k)&&(k!=i))
{
count++;
System.out.print(i*100+j*10+k+" ");
}
相似回答