A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© D.man 中级黑马   /  2015-4-21 11:28  /  714 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

根据最近几天对数组的学习,集成写了一个对数组增删改查的程序。
import java.util.Scanner;
class paixu_lianxi
{
        //获取数组非零元素
        public static int Getlength(int arr[])
        {
                int num = 0;
                for(int i=0;i<arr.length;i++)
                {
                        if(arr[i] == 0)
                                break;
                        num++;
                }
                return num;
        }
       
        //交换数组元素
        public static void change(int arr[],int a,int b)
        {
                int temp = arr[a];
                arr[a] = arr[b];
                arr[b] = temp;
        }
       
        //冒泡排序
        public static void maopaopaixu(int arr[])
        {
                int num = Getlength(arr);
                for(int i=0;i<num-1;i++)
                {
                        for(int j = 0;j<num-i-1;j++)
                                if(arr[j] > arr[j+1])
                                change(arr,j,j+1);
                }
        }
       
        //输入数组
        public static int[] shuru()
        {
                int arr[] =new int[40];
                int arr_num;
                Scanner input = new Scanner(System.in);
                System.out.println("请输入数组元素,输入0结束输入:");
                for(int i=0;i<arr.length;i++)
                {
                        if((arr_num = input.nextInt())==0 )
                                break;
                        arr[i] = arr_num;
                }
                return arr;
        }
       
        //查看数组元素
        public static void show(int arr[])
        {
                for(int i=0;i<arr.length;i++)
                {
                        if(arr[i]==0)
                                break;
                        System.out.print(arr[i]+" ");
                }
                System.out.println(" ");
        }

        //查看数组元素
        public static void show(int num)
        {
                if(num != -1)
                        System.out.println("你所查找的元素是第"+(num+1)+"个元素。\n");
                else
                        System.out.println("找不到该元素。\n");
        }

        //查找元素
        public static void findnum(int arr[])
        {
                System.out.println("请输入你所要查找的数字:");
                Scanner input = new Scanner(System.in);
                int key = input.nextInt();
                show(find(arr,key));
        }
       
        //查找元素
        public static int find(int arr[],int key)
        {
                int num = Getlength(arr);
                for(int i = 0;i < num; i++)
                        if(arr[i] == key)
                                return i;
                return -1;
        }

        //增加元素
        public static void addnum(int arr[])
        {
                System.out.print("请输入增加的数字元素:");
                Scanner input = new Scanner(System.in);
                int key = input.nextInt();
                maopaopaixu(arr);
                int wei = 0;
                int num = Getlength(arr);
                if(num==40)
                {
                        System.out.println("数组已满,无法继续增加元素。\n");
                }
                else
                {
                        for(int i=0;i<num-1;i++)
                                if(arr[i]<=key)
                                        wei++;
                        add(arr,wei,key,num);
                        System.out.println("增加元素后的数组为:");
                        maopaopaixu(arr);
                        show(arr);
                }
        }

        //增加元素
        public static void add(int arr[],int wei,int key,int num)
        {
                arr[num+1] = 0;
                for(int i=num;i>wei;i--)
                {
                        arr[i] = arr[i-1];
                }
                arr[wei] = key;
        }

        //删除元素
        public static void delnum(int arr[])
        {
                System.out.print("请输入删除的数字元素:");
                Scanner input = new Scanner(System.in);
                int key = input.nextInt();
                maopaopaixu(arr);
                int wei = 0;
                int num = Getlength(arr);
                if(num==0)
                {
                        System.out.println("数组已空,无法继续删除元素。\n");
                }
                else
                {
                        wei = find(arr,key);
                        if(wei == -1)
                        {
                                show(wei);
                        }
                        else
                        {
                                del(arr,wei,num);
                                System.out.println("删除元素后的数组为:");
                                show(arr);
                        }
                }
        }

        //删除元素
        public static void del(int arr[],int wei,int num)
        {
                if(wei == num)
                        arr[num] =0;
                else
                {
                        for(int i=wei;i<num;i++)
                        {
                                arr[i] = arr[i+1];
                        }
                }
        }
       
        //主函数
        public static void main(String[] args)
        {
                int arr[];
                arr =shuru();
                System.out.println("输入的数组为:");
                show(arr);
                Scanner input = new Scanner(System.in);
                int num_function;

                w:while(true)
                {
                        System.out.println(" ");
                        System.out.println("---------------------------------------------------------------");
                        System.out.println("1.查看数组\t 2.排序数组\t 3.查找元素\t");
                        System.out.println("4.增加元素\t 5.删除元素\t 6.退出程序\t");
                        System.out.println("---------------------------------------------------------------");
                        System.out.print("请输入功能号码:");
                        num_function = input.nextInt();
                        switch(num_function)
                        {
                                case 1:
                                        System.out.println("数组为:");       
                                        show(arr);
                                        break;
                                case 2:
                                        System.out.println("排序后的数组为:");
                                        maopaopaixu(arr);
                                        show(arr);
                                        break;
                                case 3:findnum(arr);break;
                                case 4:addnum(arr);break;
                                case 5:delnum(arr);break;
                                case 6:System.out.println("程序结束");break w;
                                default:System.out.println("输入错误!");break w;
                        }
                }


        }

       
}

3 个回复

倒序浏览
很齐全。。。。。。。加油哦
回复 使用道具 举报
同学加油!!
回复 使用道具 举报
同学你这真有耐心
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马