设计一个类,用于数组操作。
(1)成员变量为一个一维数组,数组元素是int型。
(2)构造方法中包含以一维数组为参数的构造方法。
(3)成员方法包括数组遍历(display)、添加(append)、删除(remove)、查找(indexOf) 、排序(sort)。
[分析与说明]
(1)数组的遍历运算(display),就是按顺序输出所有数组元素。
(2)数组添加运算(append),是将一个新元素放入数组,要能够执行添加操作,那么数组空间必须有多于元素实际数量,也就是数组length必须大于数组中保存的元素个数。添加操作是把新的数据元素放在最后一个元素之后,这样就需要记录元素的个数,才会找到放新元素的位置,在添加元素后,元素个数记录也会增加1。
(3)数组的删除运算(remove),要按指定的编号(下标)把元素从数组中删除,删除后的元素不存在,当然就不能在遍历运算中显示。所以这个元素删除后,它的位置上不能为空。删除操作可以把最后一个元素移到被删除位置。同时,删除也会使元素个数减少1个。数组的查找(indexOf)运算,要给出指定的数值,在数组元素中一一比较,当数组某元素与其相等时,表示查找成功,可以将此元素索引号(下标)做为结果返回;数组中没有与其相等的元素值时,表示查找失败,用-1做为结果返回。查找运算的查找范围应该在元素中查找,而不是按数组的length来进行查找。所以该运算还需要元素个数这个值。
(4)数组的排序(sort)运算,可以使用排序算法,对已有元素进行排序。(重点)以上运算中都离不开表示元素个数的值,它与所有数组元素的运算有密切关系,做为这些运算公共数据,可以将它设置为类的成员变量,这样,类的所有方法都可以直接访问和操作它,而不需要像C语言那样进行参数传递。

import java.util.Scanner;
public class Test {
    public static void Sorting(int array[]) {//排序
        int i, j, temp;
        for (i = 0; i < array.length - 1; i++) {     // 外层循环控制排序趟数
            for (j = 0; j < array.length - 1; j++) {// 内层循环控制每一趟排序多少次
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        System.out.println("排序后的数组为:");
        for (i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");
    }
    public static void add(int array[]) {//添加
        System.out.println("请输入需要添加的数");
        Scanner sc=new Scanner(System.in);
        int add=sc.nextInt();
        //int add = new Scanner(System.in).nextInt();//我发现了一种新的输入方法,把两个句子合体了
        int[] b = new int[array.length + 1];
        for (int i = 0; i < array.length; i++) {
            b[i] = array[i];
        }
        b[array.length]=add;
        //新数组替换原数组
        array=b;
        for (int i = 0; i < array.length; i++)
            System.out.print(array[i] + " ");
        //System.out.println("插入后的a新数组:"+Arrays.toString(array));//这是另一种输出方式
    }
        public static void output(int array[]) {//遍历
        System.out.println("您输入的数组为:");
        for (int l = 0; l < array.length; l++)System.out.print(array[l] + " ");
    }
    public static void delete(int array[]){//删除
        System.out.println("您需要删除第几个元素?");
        int n = new Scanner(System.in).nextInt();
        int[] newArray = new int[array.length - 1];
        for (int i = 0; i < newArray.length; i++) {
            if (i < n - 1) {
                newArray[i] = array[i];
           } else {
                newArray[i] = array[i + 1];
            }
        }
        array = newArray;
        for (int i = 0; i < array.length; i++) System.out.print(array[i] + " ");
        //System.out.println("删除第" + n + "个元素后为" + Arrays.toString(array));//这种数组输出方式是[数组元素1, 数组元素2, ......]
    }
    public static void find(int array[]) {//查找
        System.out.println("您要查找那个数?");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        printArray(array, n);//引用查找子方法
    }
    private static void printArray(int[] array, int a) {//查找子方法
        for (int i = 0; i <array.length; i++) {//如果找到,就输出这个数,否则不输出
            if (array[i] == a) {
                System.out.println("这个数是第" + i+ "个数");//从0开始数
            }
        }
    }
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入元素个数");
        int n=sc.nextInt();
        System.out.println("请输入数组");
        int array[]=new int[n];
        for(int i=0;i<n;i++)
        array[i]=sc.nextInt();
        System.out.println("请选择功能编号");
        System.out.println("1.排序");
        System.out.println("2.遍历");
        System.out.println("3.删除");
        System.out.println("4.添加");
        System.out.println("5.查找");
        int function=sc.nextInt();
        switch (function) {
            case 1:
                Sorting(array);
                break;
            case 2:
                output(array);
                break;
            case 3:
                delete(array);
                break;
            case 4:
                add(array);
                break;
            case 5:
                find(array);
                break;
            default:break;
        }
    }
}