感觉写的有点繁琐,显示的方法和插入方法有点怪,回头再看看那个数组传值,没怎么看懂 应该还可以改善很多

感觉写的有点繁琐,显示的方法和插入方法有点怪,回头再看看那个数组传值,没怎么看懂 应该还可以改善很多

package day14;

import java.util.Scanner;

public class Demo {
    static Scanner scan = new Scanner(System.in);
    static int[] arr = new int[10];

    //显示提示信息
    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("****************************************");
        System.out.println("请输入对应的数字进行操作:");
    }
    //插入数据
    public int[] insertData(){
        for(int i=0;i<arr.length-1;i++){
            System.out.println("请输入第"+(i+1)+"个数据:");
            arr[i] = scan.nextInt();
            if(arr[i]==0){
                System.out.println("数组元素不能为0,请重新输入!");
                i--;
            }
        }
        System.out.println("数组元素为:");
        for(int i=0;i<arr.length-1;i++){
            System.out.print(arr[i]+"  ");
        }
        System.out.println();
        return arr;
    }
    
    //显示所有数据
    public void showData(int[] a,int length){
        System.out.println("数组元素为:");
        if(a[a.length-1]==0){
            for(int i=0;i<a.length-1;i++){
                System.out.print(a[i]+"  ");
            }
        }else{
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+"  ");
            }
        }
        System.out.println();
    }
    
    
    //在指定位置处插入数据
    public void insertAtArray(int[] a,int n, int k){

        a[k] = n;
        for(int i:a){
            System.out.print(i+" ");
        }
        System.out.println();
    }
    //查询能被3整除的数据
    public void divThree(int[] a){
        int count = 0;//记录能被3整除的元素个数
        for(int i=0;i<a.length;i++){
            if(a[i]%3==0){
                count++;
            }
        }
        if(count==0){
            System.out.println("数组中没有能被3整除的元素");
        }else{
            System.out.println("数组中能被3整除的元素为:");
            for(int i:a){
                if(i%3==0){
                    System.out.print(i+"  ");
                }
            }
        }
        System.out.println();
    }
    
    
    
    public static void main(String[] args) {
        Demo demo = new Demo();
        int num;
        do {
            demo.notice();
            num = scan.nextInt();
            switch (num) {
            case 1:
                arr = demo.insertData();
                break;
            case 2:
                demo.showData(arr,arr.length);
                break;
            case 3:
                System.out.println("请输入要插入的数据:");
                int n = scan.nextInt();
                int k;
                boolean flag = false;
                do{
                    System.out.println("请输入要插入的位置:");
                    k = scan.nextInt();
                    if(k>=arr.length||k<0){
                        System.out.println("不符合数组长度,请重新输入!");
                    }else{
                        flag = true;
                    }
                }while(flag==false);
                
                demo.insertAtArray(arr,n,k);
                break;
            case 4:
                demo.divThree(arr);
                break;
            default:
                if(num!=0){
                    System.out.println("请按提示输入正确数字!");
                }
            }
        } while (num!=0);
        System.out.println("退出程序!");
    }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
irista23 2018-01-20 23:16:31

定义的两个静态成员,如果只是当前类使用就没有必要定义成静态的了。insertData()中的数据显示可以调用showData()方法,提高代码维护性。在指定位置插入数据的方法,应该把指定位置处的数据依次往后移动,然后再给该位置赋值,要保证之前的数据不丢失。比如通过循环把倒数第二个数据赋值给倒数第一个数组元素,倒数第三个数据赋值给倒数第而个数组元素,以此类推,直到位置k处的数据赋值给它后面的数组元素。


  • 提问者 Master_M #1
    谢谢你 就是最上面的那两个不加static下面就报错了啊 insetData()调用showData没想到这里,确实调用showData看着都舒服了,插入的那个地方没怎么看懂 还要在看看 谢谢
    2018-01-21 13:49:54
  • irista23 回复 提问者 Master_M #2
    你也可以不定义成静态成员,只要在main()方法中创建数组,并将insertData()返回值赋给它即可,其他方法都将这个数组作为参数传入方法体进行处理。
    2018-01-21 23:17:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师