您的位置:首页 > 编程语言 > Java开发

有 1、 2、 3、 4 个数字, 能组成多少个互不相同且无重复数字的三位数? 计算并打印出这些数字

2016-11-16 15:18 543 查看
作业:1、 有 1、 2、 3、 4 个数字, 能组成多少个互不相同且无重复数字的三位数? 计算并打印出这些数字;

编写思想:在百位、个位、十位数字上分别遍历1/2/3/4, 只要十位、个位、百位上的数字均不相等 就输出来

用到的知识点:for循环,数组,if语句的使用

第一种方法:

public class Arrange {

public static void main(String[] args) {

Nums n = new Nums();

int[] arr = n.print();

//使生成的数组打印成两排
for(int i=0;i<arr.length/2;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
for(int i=arr.length/2;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}


}

class Nums {

/*

* 定义一个输出数组的方法

*/

public int[] print() {

int[] arr1 = new int[64];  //共有64种可能
int flag = 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 && (i != k) && (j != k)) { //判断百位、个位、十位都不相等
arr1[flag] = i * 100 + j * 10 + k;
flag++;
}
}
}
}
int[] arr2 = new int[flag];
System.arraycopy(arr1, 0, arr2, 0, flag);//复制生成新的数组
return arr2;
}


}

第二种方法:简化版

int i=0,j=0,k=0;

for(i=1;i<5;i++){

for(j=1;j<5;j++){

if(i!=j){

for( k=1;k<5;k++){

if(k!=j&&k!=i){

System.out.print(i);

System.out.print(j);

System.out.print(k);

System.out.println();

}

}

}

}

或 把数据封装后可以有下列写法

char[] a ={'1','2','3','4'};
int index = 0;
char[] arrys=new char[3];
for(int i = 0; i<a.length;i++){
for(int j = 0; j<a.length;j++ ){
for(int k = 0; k<a.length;k++ ){
if(a[i]!=a[j] && a[j]!=a[k]&& a[k] !=a[i]){
arrys[0]=a[i];
arrys[1]=a[j];
arrys[2] =a[k] ;
index++;
System.out.println("循环第 "+index+" : "+arrys[0]+" , "+arrys[1]+" , "+arrys[2]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java编程思想
相关文章推荐