3.6、题目

  1. 3.6、题目

3.6、题目

现在要求定义一个数组类(Array),里面定义了一个整形数组,但是此整形数组属于动态分配大小,即:所有的大小由程序制定,并在此基础上实现以下的两个子类:

  • 反转类:可以将数组的内容反转排列
  • 排序类:可以对数组进行排序的操作

本程序结合了之前所学过的所有知识:

class Array{
    private int temp[] = null;      //只是声明数组,但是大小未知
    private int foot = 0;       //用于保存下一个的记录点
    public Array(int len){
        if (len>0){
            this.temp = new int[len];       //此时大小由外部决定
        }else {
            this.temp = new int[1];         //至少开辟一个空间
        }
    }
    public boolean add(int i){          //加入数据操作
        if (this.foot<this.temp.length){    //还有空位
            this.temp[this.foot] = i;       //加入内容
            this.foot++;        //改变长度
            return true;        //加入成功则返回true
        }else {
            return false;       //加入失败
        }
    }
    public int[] getArray(){
        return this.temp;
    }
}
class SortArray extends Array{
    public SortArray(int len){
        super(len);
    }
    public int[] getArray(){
        java.util.Arrays.sort(super.getArray());      //排序操作
        return super.getArray();        //返回的是排序后的内容
    }
}
class ReverseArray extends Array{
    public ReverseArray(int len){
        super(len);
    }
    public int[] getArray(){
        int rt[] = new int[super.getArray().length];    //根据大小开辟新数组
        int count = rt.length-1;
        for (int x=0;x<super.getArray().length;x++){
            rt[count] = super.getArray()[x];
            count--;
        }
        return rt;
    }
}


public class Demo01 {
    public static void main(String args[]) {
    ReverseArray arr = new ReverseArray(6);
    System.out.println(arr.add(3));
    System.out.println(arr.add(23));
    System.out.println(arr.add(1));
    System.out.println(arr.add(5));
    System.out.println(arr.add(6));
    System.out.println(arr.add(8));
    System.out.println(arr.add(11));
    System.out.println(arr.add(16));
    print(arr.getArray());
    }
    public static void print(int i[]){
        for (int x=0;x<i.length;x++){
            System.out.print(i[x]+ "、 ");
        }
    }

}

转载请注明来源