赞
踩
第一次作业:
有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?
输出格式为:
123
124
134
…
共有**个
//答案示例 int num = 0;//总数 for (int x = 1 ; x < 5 ; x++){//循环百位 for (int y = 1 ; y < 5 ; y++){//循环十位 if (y == x){//如果百位和十位相等就跳出这层循环 continue; } for (int z = 1 ; z < 5 ; z++){//循环个位 if (z != x && z != y){ num++;//总数+1 System.out.println(100*x+10*y+z);//输出 } } } } System.out.println("共有"+num+"个"); //输出结果: //123 //124 //132 //134 //142 //143 //213 //214 //231 //234 //241 //243 //312 //314 //321 //324 //341 //342 //412 //413 //421 //423 //431 //432 //共有24个
问题1:在第5行跳出这层循环有什么好处,在下方留言
第二次作业
public static void main(String[] args) { int[] oneArr = {5,4,7,8,4,21,4}; //补充代码,调用sortArr方法,然后依次输出数组的元素 /* 结果示例: 1.oneArr = {5,4,7,8,4,21,4},type = true; 输出: 4 5 7 8 21 2.1.oneArr = {5,4,8,1,44,20,12},type = false; 输出 44 20 12 8 5 4 1 */ } public static int[] sortArr(int[] oneArr , boolean type){ //补充代码,使当type = true时返回升序排序后的数组,当type = false时返回降序排序的数组(注意,要去掉重复数字 }
//答案示例 public static void main(String[] args) { int[] oneArr = {5,4,7,8,4,21,4}; boolean type = true;//升序排序 //获取升序排序数组(降序就把true改成false int[] data = sortArr(oneArr,type); //输出 System.out.println((type?"升序":"降序")+"排序为:"); for (int x = 0 ; x < data.length ; x++){ System.out.println(data[x]); } } public static int[] sortArr(int[] oneArr , boolean type){ int temp; //方法1:面向过程,用冒泡排序 //升序排序数组 for(int i = 0; i<oneArr.length; i++){//从第一个元素循环到最后一个 for (int j = oneArr.length-1; j > i; j--) {//从最后一个元素循环到当前的i if (oneArr[j] < oneArr[j - 1]) {//如果后者小于前者,2者调换位置 temp = oneArr[j - 1]; oneArr[j - 1] = oneArr[j]; oneArr[j] = temp; } } } //方法2:面向对象,用Arrays.sort()方法实现排序数组 // Arrays.sort(oneArr); //降序排序 if (!type){//如果为降序排序,则把oneArr转过来 // 遍历数组前一半 for(int i = 0;i < oneArr.length / 2;i++){ // 交换元素 temp = oneArr[oneArr.length -i - 1]; oneArr[oneArr.length -i - 1] = oneArr[i]; oneArr[i] = temp; } } //去掉重复字 int[] newArr = new int[oneArr.length]; int y = 0;//newArr的当前下标 int ordNum = 0;//上一个输出的数 for (int x = 0 ; x < oneArr.length ; x++){ if (oneArr[x] != ordNum || x==0){ ordNum = oneArr[x]; newArr[y] = ordNum; y++;//newArr的当前下标后移一位 } } //这时候newArr = [*,*,*,*,0,0,0,]后oneArr.length-y的数字是0; System.out.println("newArr:"+Arrays.toString(newArr)); int[] newArr1 = new int[y];//定义一个长度为y的数组,把newArr的前y个数复制到newArr1中 for (int z = 0 ; z < y ; z++){ newArr1[z] = newArr[z]; } System.out.println("newArr1:"+Arrays.toString(newArr1)); return newArr1; }
问题2:在第51行的x==0的作用是什么,在下方留言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。