题目:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后
求出所有元素的最大值,最小值,和值,平均值,并输出出来.
要求:所有随机数都是两位数.
[10,99]
公式:(int)(Math.random()*(b-a+1)+a)
public class ArrayTest1{ public static void main(String[] args){ int[] arr = new int[10]; for(int i = 0;i <arr.length;i++){ arr[i] = (int)(Math.random()*(99-10+1)+10); } //遍历 for(int i = 0;i < arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println(); //求最大值 int maxValue = arr[0]; for(int i = 1;i <arr.length;i++) { if(maxValue < arr[i]){ maxValue = arr[i]; } } System.out.println("最大值为:"+maxValue); //求最小值 int minValue = arr[0]; for(int i = 1;i <arr.length;i++) { if(minValue > arr[i]){ minValue = arr[i]; } } System.out.println("最小值为:"+minValue); //元素总和 int sum = 0; for(int i = 0;i < arr.length;i++){ sum += arr[i]; } System.out.println("总和为:"+sum); //数组的平均数 int avgValue = sum/arr.length; System.out.println("平均数为:"+avgValue); } }
1.
思考:array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体
public class ArrayTest2{ public static void main(String[] args){ int[] array1,array2; array1 = new int[]{2,3,5,7,11,13,17,19} ; //遍历,显示array1的内容 for(int i = 0;i < array.length;i++){ System.out.print(array[i]+"\t") ; } //赋值array2变量等于array1 array2 = array1; //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2) for(int i = 0;i < array1.length;i++){ if(i%2 == 0){ array2[i] = i; } } //打印出array1 for(int i = 0;i < array1.length;i++){ System.out.print(array[i]+"\t") ; } //修改题目:实现array2对array1的复制 for(int i = 0;i <array1.length;i++){ array2[i] = array1[i] ; } } }
2.
public class ArrayTest2{ public static void main(String[] args){ String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"}; //数组的复制 String[] arr1 = new String[arr.length]; for(int i = 0;i<arr1.length;i++){ arr1[i] = arr[i]; } //数组的反转 /* 方式1: for(int i = 0;i <arr.length/2;i++){ String temp = arr[i]; arr[i] = arr[arr.length-i-1]; arr[arr.length-i-1] = temp; } //方式2: for(int i = 0;j = arr.length - 1;i < j;i++;j--){ String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } */ //遍历 for(int i = 0;i <arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println(); //查找 //线性查找: String dest = "BB"; boolean isFlag = true; for(int i = 0;i <arr.length;i++){ if(dest.equals(arr[i])){ System.out.println("找到了指定的元素,位置为:"+i); break; } } if(isFlag){ System.out.println("未找到指定元素"); } //二分查找(前提:所要查找的数组必须要有序) int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105}; int dest1 = -34; int head = 0; //初始的首索引 int end = arr2.length-1; //初始的末索引 boolean isFlag1 = true; while(head <= end){ int middle = (head+end)/2; //定义中心 if(dest1 == arr2[middle]){ System.out.println("找到了指定的元素,位置为:"+i) ; isFlag1 = false; break; }else if(arr2[middle]>dest1){ end = middle-1; }else{ //arr2[middle]<dest1 head = middle+1; } } if(isFlag1){ System.out.println("未找到指定元素"); } } }