今天学习数组的两种常见错误 ArrayIndexOutOfBoundsException 和 NullPointerException。(见day05)
之后一起做一些数组的练习。
1.数组遍历(依次输出数组中的每一个元素) 2.数组元素逆序 3.对取值范围在1~100的数据集合排序 计数排序 Counting Sort 4.数组获取最值(获取数组中的最大值或最小值) 5.数组查表法(根据键盘录入索引,查找对应星期) 6.数组元素查找(查找指定元素第一次在数组中出现的索引)
1 import java.util.Arrays; 2 3 /** 4 * 5 * 数组遍历(依次输出数组中的每一个元素) 6 * 数组元素逆序 7 * 对取值范围在1~100的数据集合排序 计数排序 Counting Sort 8 * 数组获取最值(获取数组中的最大值或最小值) 9 * 数组查表法(根据键盘录入索引,查找对应星期) 10 * 数组元素查找(查找指定元素第一次在数组中出现的索引) 11 */ 12 public class Exercise { 13 14 public static void main(String[] args) { 15 //遍历数组 16 //int[] arr = new int[10]; 17 //arr[0] = 1; 18 //arr[1] = 2; 19 //traverse(arr); 20 21 //数组逆序 22 //int[] arr1 = {1, 2, 3, 4}; 23 //reverseArray(arr1); 24 //// Arrays.toString() 得到数组中的所有元素的值 25 //String s = Arrays.toString(arr1); 26 //System.out.println(s); 27 28 //排序 29 int[] arr2 = {5, 100, 100, 20, 1,30, 20}; 30 //sort(arr2); 31 //System.out.println(Arrays.toString(arr2)); 32 33 //int max = findMax(arr2); 34 //System.out.println(max); 35 36 //System.out.println(findDayOfWeek(7)); 37 38 int location = findLocation(arr2, 100); 39 System.out.println(location); 40 41 } 42 43 //数组遍历(依次输出数组中的每一个元素) 44 public static void traverse(int[] arr) { 45 //数组有一个属性length [0, length - 1] 46 int len = arr.length; //数组长度 47 System.out.println("len = " + len); 48 for (int i = 0; i < len; i++) { 49 System.out.println(arr[i]); 50 } 51 } 52 53 public static void reverseArray(int[] arr) { 54 //完成数组逆序的核心思路:对称位置元素交换位置 55 56 for (int i = 0; i < arr.length / 2; i++) { 57 int tmp; 58 tmp = arr[i]; 59 arr[i] = arr[arr.length - 1 - i]; 60 arr[arr.length - 1 - i] = tmp; 61 } 62 } 63 64 public static void sort(int[] arr) { 65 66 //1.根据题意创建包含101个元素的数组 countArray 67 int[] countArray = new int[101]; 68 69 //2. 遍历待排序集合,在countArray中,对待排序的数据计数 70 71 for (int i = 0; i < arr.length; i++) { 72 //得到待排序集合中当前元素的值 73 int resultIndex = arr[i]; 74 countArray[resultIndex]++; 75 } 76 77 //3. 在原数组中排序 78 int index = 0; 79 for (int i = 0; i < countArray.length; i++) { 80 81 //针对countArray中每一个计数值,把计数值个countArray的数组下标值 82 for (int j = 0; j < countArray[i]; j++) { 83 arr[index] = i; 84 index++; 85 } 86 } 87 88 } 89 90 public static int findMax(int[] arr) { 91 //存储数组中的最大值 92 int max = arr[0]; 93 for (int i = 1; i < arr.length; i++) { 94 if(arr[i] > max) { 95 max = arr[i]; 96 } 97 } 98 return max; 99 100 } 101 102 /** 103 * 104 * @param index 1星期1 .. 7代表星期日 105 * @return 106 */ 107 public static String findDayOfWeek(int index) { 108 String[] daysOfWeek = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"}; 109 return daysOfWeek[index - 1]; 110 } 111 112 113 public static int findLocation(int[] arr, int value) { 114 115 int resultIndex = -1; //合法位置[0,arr.length - 1] 116 for (int i = 0; i < arr.length; i++) { 117 if (arr[i] == value) { 118 resultIndex = i; 119 break; 120 } 121 } 122 return resultIndex; 123 } 124 125 126 }