• 【9】综合案例:数组移位与统计


    1、综合案例的需求:定义一个类,对数组中的数据进行管理
     
    2、方法:
    1)在数组中插入数据:public int[] insertData(){}
    2)显示所有数据:public void showData(int[] a,int length){} 3)查询能被3整除的数据:public void divThree(int[] a){} 4)在指定位置出插入数据:public void insert AtArray(int[] a,int n,int k){}
    ps:括号里的三个意思是:插入数据的数组,数据,位置
    5)查询能被3整除的数据:public void divThree(int[] a){}
     
    3、提示:异常处理
     
    				try {
    					a[i] = sc.nextInt();
    				} catch (java.util.InputMismatchException e) {
    					System.out.println("数据输入错误,不能有非数字!");
    					sc.next();//用来接收字符串
    					i--;//因为第一个数据错了,要重新输入
    				}
    

     4、  代码:

    package com.fiona.javaBasis.day09case;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    /**
     * 从键盘接收整型数据存放到数组中,并对数组中的数据进行管理
     * 
     * @author fiona
     *
     */
    public class DataManage {
        /**
         * 从键盘接收数据
         * 
         * @return 接收数据的数据
         */
        public int[] insertData() {
            int[] a = new int[10];//创建有10个位置的数组
            Scanner sc = new Scanner(System.in);
            // 少接收一个数据,为在指定位置处插入数据做准备
            for (int i = 0; i < a.length - 1; i++) {
                System.out.println("请输入第" + (i + 1) + "个数据:");
                try {
                    a[i] = sc.nextInt();
                } catch (InputMismatchException e) {
                    System.out.println("输入的数据格式有误,不能有非数字!");
                    sc.next();
                    i--;
                }
            }
            return a;
        }
    
        /**
         * 显示数组中元素的内容
         * 
         * @param a
         *            数组
         * @param length
         *            要显示的数组元素的个数
         */
        public void showData(int[] a, int length) {
            for (int i = 0; i < length; i++) {
                System.out.print(a[i] + "     ");
            }
            System.out.println();
        }
    
        /**
         * 从键盘接收一个数据,插入到数组的指定位置处
         * 
         * @param a
         *            要插入数据的数组
         * @param n
         *            要插入的数据
         * @param k
         *            要插入的位置,从0开始
         */
        public void insertAtArray(int[] a, int n, int k) {
            // 注意从最后一个数据开始移动,避免数据覆盖
            for (int i = a.length - 1; i > k; i--) {
                a[i] = a[i - 1];
            }
            a[k] = n;
        }
    
        /**
         * 输出数组中能被3整除的元素
         * 
         * @param a
         */
        public void divThree(int[] a) {
            String str = "";
            int count = 0;
            for (int n : a) {
                if (n % 3 == 0) {
                    str = str + n + "   ";
                    count++;
                }
            }
            if (count == 0) {
                System.out.println("数组中没有能被3整除的元素!");
            } else {
                System.out.println("数组中能被3整除的元素为:" + str);
            }
        }
    
        /**
         * 提示信息
         */
        public void notice() {
            System.out.println("********************************************");
            System.out.println("                1--插入数据");
            System.out.println("                2--显示所有数据");
            System.out.println("                3--在指定位置处插入数据");
            System.out.println("                4--查询能被3整除的数据");
            System.out.println("                0--退出");
            System.out.println("********************************************");
        }
    
        public static void main(String[] args) {
            DataManage dm = new DataManage();
            Scanner sc = new Scanner(System.in);
            int input = 0;
            int[] a=null;
            int n=0,k=0;//n表示要插入的数据,k表示插入位置
            while (true) {
                dm.notice();
                System.out.println("请输入对应的数字进行操作:");
                try{
                input = sc.nextInt();
                }catch(InputMismatchException e){
                    System.out.println("输入的数据格式有误,不能有非数字!");
                    sc.next();
                    continue;
                }
                if (input == 0) {
                    System.out.println("退出程序!");
                    break;
                }
                switch (input) {
                case 1:
                    //插入数据
                    a=dm.insertData();
                    //显示数据
                    System.out.println("数组元素为:");
                    dm.showData(a, a.length-1);
                    break;
                case 2:
                    if(a!=null){
                        System.out.println("数组元素为:");
                        if(a[a.length-1]==0){
                            //如果数组的最后一个元素为0,说明还没有拆入数据,因此不显示最后一个元素
                            dm.showData(a, a.length-1);
                        }else{
                            dm.showData(a, a.length);
                        }
                    }else{
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
                case 3:
                    //在指定位置处插入数据
                    if(a!=null){
                        System.out.println("请输入要插入的数据:");
                        try{
                        n=sc.nextInt();
                        System.out.println("请输入要插入数据的位置:");
                        k=sc.nextInt();
                        }catch(InputMismatchException e){
                            System.out.println("输入的数据格式有误,不能有非数字!");
                            sc.next();
                            break;
                        }
                        dm.insertAtArray(a, n, k);
                        dm.showData(a, a.length);
                    }else{
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
                case 4: 
                    //查询数组中能被3整除的元素
                    if(a!=null){
                        dm.divThree(a);
                    }else{
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
                }
            }
        }
    
    }
    View Code

  • 相关阅读:
    salesforce
    InitializingBean afterPropertiesSet
    Springfox Reference Documentation
    说说 PWA 和微信小程序--Progressive Web App
    Spring Security HTTP Basic for RESTFul and FormLogin (Cookies) for web
    分布式环境下限流方案的实现redis RateLimiter Guava,Token Bucket, Leaky Bucket
    Android高德地图自定义Markers的例子
    JAVA字符串转日期或日期转字符串
    JSON封装与解析
    Android得到控件在屏幕中的坐标
  • 原文地址:https://www.cnblogs.com/haifeima/p/12673245.html
Copyright © 2020-2023  润新知