Java数组移位和统计

package com.imooc.method;

import java.util.InputMismatchException;
import java.util.Scanner;

public class DataManage {
    public int[] insertData(){
        int[] a=new int[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;
    }
    /*
     * 显示数组中元素的内容
     * a:数组:
     * length :要显示的数组元素的个数:
     * */
    public void showData(int[] a,int length) {
        for(int i=0;i<length;i++) {
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }
    /*从键盘接收一个数据,插入到数组的指定位置处:
     * 
     * */
    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整除的元素:
    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) {
        // TODO 自动生成的方法存根
        DataManage dm=new DataManage();
//        dm.notice();
        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) {
                // TODO: handle exception
                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) {
                        dm.showData(a,a.length-1);
                    }
                }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) {
                        // TODO: handle exception
                        System.out.println("输入的数据格式有误,不能有非数字");
                        sc.next();
                        break;
                    }
                    dm.insertAtArray(a, n, k);
                    dm.showData(a, a.length);
                }else {
                    System.out.println("还未在数据中插入数据,请重新插入数据");
                }
                break;
            case 4:
                if(a!=null) {
                    dm.divThree(a);
                }else {
                    System.out.println("还未在数字中插入数据,请重新选择操作");
                }
                break;
            }
        }
    }

}

 

posted @ 2019-12-07 16:22  生如逆旅,一苇以航  阅读(616)  评论(0编辑  收藏  举报