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习题练习的主要内容,如果未能解决你的问题,请参考以下文章

Python3练习题系列(03)

java 异常练习题2

Java类加载顺序练习题

java多线程练习题

循环语句练习题2

Java继承_接口练习题