java习题练习
Posted 骐骥一跃,不能十步;驽马十驾,功在不舍。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java习题练习相关的知识,希望对你有一定的参考价值。
由浅入深学java
第三章数组 习题练习
P30
【习题3-1】首先声明一个数组,将该数组中存在的重复元素删除,并将该数组按照一定的顺序排序。
1 package first_project1; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 6 public class Demo20190317 { 7 8 public static void main(String args[]) { 9 int[] arr = generateAnArray(25); 10 showArray(arr); 11 arrangeAnArray(arr); 12 showArray(arr); 13 int[] newArr = trim(arr); 14 showArray(newArr); 15 } 16 17 /** 18 * 用冒泡排序法将给定的int[]型数组由小到大排序 19 * 20 * @param array 21 * @return 22 */ 23 public static int[] arrangeAnArray(int[] array) { 24 // 此处i和j(尤其是j)都必须小于array.length,否则会发生数组下标越界错误 25 for (int i = 0; i < array.length; i++) { 26 for (int j = i + 1; j < array.length; j++) { 27 if (array[i] > array[j]) { 28 int temp = array[i]; 29 array[i] = array[j]; 30 array[j] = temp; 31 } 32 } 33 } 34 return array; 35 } 36 37 /** 38 * 指定数组长度,生成一个int[]数组,里面的数字为0-20的随机数 39 * 40 * @param arrLen 41 * @return 42 */ 43 public static int[] generateAnArray(int arrLen) { 44 int[] arr = new int[arrLen]; 45 // 此处的1为随机数种子,保证每次生成的都一样 46 Random rd = new Random(1); 47 for (int i = 0; i < arr.length; i++) { 48 arr[i] = rd.nextInt(20); 49 } 50 // 如果要排序,除了自己手写,也可以用如下方法排序 51 // Arrays.sort(arr); 52 return arr; 53 } 54 55 /** 56 * 数组去重 57 * 58 * @param arr1 59 * @return 60 */ 61 public static int[] trim(int[] arr1) { 62 int t = 0; 63 boolean isTrue = true; 64 // 先根据传入的数组生成一个一样长度的数组 65 int[] tmpArr = new int[arr1.length]; 66 for (int i = 0; i < arr1.length; i++) { 67 isTrue = true; 68 // 将数组中每一个值与后面所有的值进行比较,如果相同则把标志isTrue置为false 69 for (int j = i + 1; j < arr1.length; j++) { 70 if (arr1[i] == arr1[j]) { 71 isTrue = false; 72 } 73 } 74 // System.out.println(isTrue); 75 // 每一轮比较完之后如果没有重复则将未重复的值赋给tmpArr[t],同时t自加1 76 // 由于每轮比较开始时,该元素不会与其前面的元素相比较,所以当有重复时,同样的数字中最后一个会当成不重复的赋值给tmpArr[t] 77 if (isTrue) { 78 tmpArr[t] = arr1[i]; 79 t++; 80 } 81 } 82 int[] arr2 = new int[t]; 83 // arrayCopy( arr1, 2, arr2, 5, 10); 84 // 意思是将arr1数组里从索引为2的元素开始, 复制到数组arr2里的索引为5的位置, 复制的元素个数为10个. 85 System.arraycopy(tmpArr, 0, arr2, 0, t); 86 // 将不重复的前t个元素复制到新的数组中 87 System.out.println("t=" + t); 88 return arr2; 89 } 90 91 public static void showArray(int[] arr) { 92 System.out.println("数组" + arr + "为:"); 93 for (int k : arr) { 94 System.out.print(k + " "); 95 } 96 System.out.println(); 97 } 98 }
其中数组去重参考了这位博主的文章,在此表示感谢https://www.cnblogs.com/ccwu/p/7504478.html
java的arrayCopy用法参考文章:https://blog.csdn.net/csdn_dengfan/article/details/78213492
Java中对Array数组的常用操作:https://blog.csdn.net/rocklee/article/details/79244651
java的三种随机数生成方式:https://www.cnblogs.com/blogxjc/p/9687297.html
以上是关于java习题练习的主要内容,如果未能解决你的问题,请参考以下文章