老师不好意思!刚才上传代码,忘选择语言了!老师请看这个吧~

老师不好意思!刚才上传代码,忘选择语言了!老师请看这个吧~

import java.util.Scanner;
public class DataTest {
    int[] arr = new int[10];          //定义一个长度为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() {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 9; i++) {
            System.out.println("请输入第" + (i + 1) + "个数据");
            arr[i] = sc.nextInt();
            if (arr[i] == 0) {
                System.out.println("输入的值不能为0!");
                i--;
            }
        }
        System.out.println("数组元素为:");
        for (int a : arr) {                         //使用foreach循环遍历数组
            if (a == 0)
                break;
            System.out.print(a + " ");
        }
        System.out.println();
        return arr;
    }

        //显示数据功能
    public void showData(int[] arr, int length) {
        System.out.println("数组元素为:");
        if (arr[length - 1] == 0) {                //判断数组是原始数组还是插入后的数组
            for (int i = 0; i < length - 1; i++)
                System.out.print(arr[i] + " ");
        } else {
            for (int i = 0; i < arr.length; i++)
                System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
        //在指定位置插入数据功能
    public void insertAtArray(int[] arr, int n, int k) {
        for (int i = arr.length - 1; i >= k; i--) {    //用for循环把前一个数赋值给后一个数,留出位置
            arr[i] = arr[i - 1];
        }
        arr[k-1] = n;
        for (int a : arr) {
            System.out.print(a + " ");
        }
        System.out.println();
    }

    //查询能被3整除的功能
    public void divThree(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 3 == 0) {
                System.out.print(arr[i] + " ");
            }
        }
        System.out.println();
    }

    //逻辑区
    public static void main(String[] args) {
        DataTest dt = new DataTest();               //创建对象并实例化
        dt.notice();                                //调出用户界面
        int n;
        do{                                         //用do...while循环,选择功能
            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            int[] data = dt.arr;                    //利用(对象.属性)给数组传值(想了好久很关键!)
            switch (n) {
                case 1:
                    dt.insertData();                //调用插入功能
                    dt.notice();                    //再次调出用户界面
                    break;
                case 2:
                    dt.showData(data, 10);    //给显示数据功能的方法传值
                    dt.notice();                     //再次调出用户界面
                    break;
                case 3:
                    System.out.println("请输入要插入的数据:");
                    int n1 = sc.nextInt();
                    System.out.println("请输入要插入数据的位置");
                    int k = sc.nextInt();
                    dt.insertAtArray(data, n1, k);
                    dt.notice();
                    break;
                case 4:
                    dt.divThree(data);
                    dt.notice();
                    break;
                case 0:
                    continue;
                 default:
                     System.out.println("输入数字无效!请您输入0-4之间的数字!");
                     dt.notice();
            }
        }while(n!=0);
        System.out.println("程序终止啦~");
    }
}


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

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

2回答
吃吃吃鱼的猫 2019-04-12 15:52:27

同学你好,代码运行正确,写的很棒~这里给一个小建议,Scanner对象定义在while循环外,避免多次重复定义。关于同学的问题,是不能在insertData()方法时,重新定义data数组,需要将data数组定义在循环外,执行insertData();方法时进行赋值操作。http://img1.sycdn.imooc.com//climg/5cb042680001765c06340423.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

提问者 键盘上的莫扎特 2019-04-12 13:33:32

老师,我的代码第81行,我用的是(对象名.属性)的方法,把arr数组的值存储在新数组data中,而视频中讲的是用 int[] data=对象名.insertData() 方法存储到新数组data中,我也试着用了视频里的这种方法,可是系统运行这行代码的时候,又运行insertData()方法里插入数据的内容,并没有实现给新数组data传值的操作,这是怎么回事啊? 谢谢老师


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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