面向对象的方法重写数组功能
用面向对象的方法把可以对数组实现的功能写在对应的方法里,以待什么时候需要就调用此方法来实现对应的功能。
方法类:ArrayUtil
1 package com.sanguosha.exer; 2 //一个数组的工具类 3 public class ArrayUtil {//设置好需要调用的方法 4 //设置求数组的最大值的方法 5 public int getMax(int[] arr){//传进来一个数组参数,针对这个数组 6 int max=arr[0]; 7 for(int i=0;i<arr.length;i++){ 8 if(max<arr[i]){ 9 max=arr[i]; 10 } 11 } 12 return max; 13 } 14 //设置求数组的最小值的方法 15 public int getMin(int[] arr){//传参 16 int min=arr[0]; 17 for(int i=0;i<arr.length;i++){ 18 if(min>arr[i]){ 19 min=arr[i]; 20 } 21 } 22 return min; 23 } 24 //设置求数组的总和的方法 25 public int getSum(int[] arr){ 26 int sum=0; 27 for(int i=0;i<arr.length;i++){ 28 sum+=arr[i]; 29 } 30 return sum; 31 } 32 //求数组的平均值 33 public double getAgv(int[] arr){ 34 int sum=0; 35 double agv=0;//局部变量必须初始化********注意 36 for(int i=0;i<arr.length;i++){ 37 sum+=arr[i]; 38 agv=sum/arr.length; 39 } 40 return agv; 41 } 42 //遍历数组元素 43 public void showArr(int[] arr){ 44 for(int i=0;i<arr.length;i++){ 45 System.out.print(arr[i]+" "); 46 } 47 } 48 //数组的复制 49 public int[] arrCopy(int[] arr){//设置返回值类型为一个数组 50 int[] fuzhi=new int[arr.length]; 51 for(int i=0;i<arr.length;i++){ 52 fuzhi[i]=arr[i]; 53 //System.out.print(fuzhi[i]+" "); 54 } 55 for(int i=0;i<fuzhi.length;i++){ 56 System.out.print(fuzhi[i]+" ");//复制后遍历 57 } 58 return fuzhi;//返回一个数组 59 } 60 //数组的反转 61 public int[] fanZhuan(int[] arr){ 62 for(int i=0;i<arr.length/2;i++){ 63 //int temp=0; 64 //temp=arr[i]; 65 //arr[i]=arr[arr.length-1-i]; 66 //arr[arr.length-1-i]=temp;
//可以直接调用交换方法来实现交换了
jiaoHuan(arr,i,arr.length-1-i); 67 } 68 return arr; 69 } 70 //数组的排序 71 public void sort(int[] arr){//实现排序 72 for(int i=0;i<arr.length-1;i++){//冒泡排序走arr.length-1趟 73 for(int j=0;j<arr.length-1-i;j++){//每趟比较的次数 74 //从头比较相邻的两个数,若前边的大,则交换 75 if(arr[j]>arr[j+1]){ 76 //int temp=0; 77 //temp=arr[j]; 78 //arr[j]=arr[j+1]; 79 //arr[j+1]=temp;
//这时候就不用写这个交换代码了,直接调用交换方法
jiaoHuan(arr,j,j+1); 80 } 81 } 82 } 83 }
//设置一个交换方法jiaoHuan()用以调用。
public void jiaoHuan(int[] arr,int i,int j){//注意************此处参数的写法,交换一个数组中的两个位置的元素***********
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
} 84 }
需要对数组进行操作时,调用以上方法
定义一个类TestArray:
1 package com.sanguosha.exer; 2 3 public class TestArray { 4 public static void main(String[] args) { 5 int[] arr=new int[]{12,23,-45,3,47,-86,3,100,1,2};//声明一个数组arr 6 ArrayUtil AU=new ArrayUtil();//用ArrayUtil类实例化一个对象 7 8 int zuidazhi=AU.getMax(arr);//调用写好的求最大值的getMax()方法 9 System.out.println("arr数组的最大值是:"+zuidazhi);//打印最大值 10 11 int zuixiaozhi=AU.getMin(arr);//调用getMin()方法 12 System.out.println("arr数组的最小值是:"+zuixiaozhi); 13 14 int zonghe=AU.getSum(arr);//调用getSum()方法 15 System.out.println("arr数组的总和是:"+zonghe); 16 17 double pingjun=AU.getAgv(arr);//调用getAgv() 18 System.out.println("arr数组的的平均值是:"+pingjun); 19 20 System.out.println("遍历arr数组:"); 21 AU.showArr(arr);//遍历,调用showArr() 22 23 System.out.println("\n复制出的数组是:"); 24 AU.arrCopy(arr);//调用复制方法 25 26 System.out.println("\n数组反转后:"); 27 AU.fanZhuan(arr);//实现数组的反转 28 AU.showArr(arr);//反转后再次打印arr数组 29 30 System.out.println("\n排序后的数组:"); 31 AU.sort(arr);//调用排序方法sort() 32 AU.showArr(arr);//排序后调用遍历方法遍历 33 } 34 }
运行结果: