请问老师我程序代码中关于数组显示的问题

请问老师我程序代码中关于数组显示的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.imooc;
 
import java.util.Scanner;
 
public class DateManage {
    //插入数据的方法
    public int[] insertDate(int arr[]) {
        Scanner sc = new Scanner(System.in);
        //从键盘接收数据并存入数组
        for (int i=0; i<arr.length-1;i++) {
            System.out.print("请输入第"+(i+1)+"个数据:");
            arr[i] = sc.nextInt();
        }
        //输出数组元素
        System.out.print("数组元素为:");
        for (int i=0; i<arr.length-1;i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("");
        return arr;
    }
 
    //显示所有数据的方法
    public void show(int[] a,int length) {
        System.out.println("数组的元素为:");
        for (int i=0;i<length;i++) {
            System.out.println(a[i] + "  ");
        }
    }
 
    //在指定处插入数据的方法
    public void insertAtArray(int[] a, int n, int k) {
        //k位置后数据向后移
        for (int i= a.length-1;i>=k;i--) {
            a[i]=a[i-1];
        }
        //k位置的元素值
        a[k-1]=n;
        System.out.println(a);
    }
 
    // 查询能被3整除的数据的方法
    public void divThree(int[] a){
        System.out.println("数组中能被3整除的数为:");
        for (int i=0;i<a.length;i++){
            if (a[i]%3==0) {
                System.out.print(a[i]+" ");
            }
        }
    }
 
    // 显示提示信息的方法
    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) {
        DateManage dm=new DateManage();
        int[] arr=new int[10];
        dm.notice();
        boolean flag=true;
         
        //接收数据判断匹配操作序号
        Scanner sc=new Scanner(System.in);
        while(flag){
            System.out.println("请输入操作序号:");
            int x=sc.nextInt();
            if(x==0){
                System.out.println("退出程序!");
                break;
            }
            if(x>4){
                System.out.println("输入有误!请输入正确的操作序号:");
            }
            switch(x){
                case 1: dm.insertDate(arr);
                        dm.notice();   
                        break;
                         
                case 2: System.out.println("请输入显示的数组长度:");
                        int length=sc.nextInt();
                        dm.show(arr,length);
                        dm.notice();
                        break;
                 
                case 3: System.out.println("请输入要插入的数据:");
                        int n=sc.nextInt();
                        System.out.println("请输入要插入的位置:");
                        int k=sc.nextInt();
                        dm.insertAtArray(arr,n,k);
                        dm.show(arr,8);
                        dm.notice();
                        break;
                         
                case 4: dm.divThree(arr);
                        dm.notice();
                        break;
            }
         
         
        }
                 
    }
 
}

我的问题:关于数组显示的方法中,我分辨不出插入数据之前的数组和插入数据之后的数组,导致之后对于数组的操作,尤其是调用方法给数组传值或是进行键盘输入传值很难理解。

希望解决:1.我代码如何修改可以保障程序正常运行;

                    2.希望可以给出解决问题的思路。谢谢!

正在回答

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

2回答

你好!这个地方不是8,改成arr.length。祝学习愉快!

http://img1.sycdn.imooc.com//climg/5ba65aa60001a3a505310192.jpg

好帮手慕查理 2018-09-13 17:27:59

您好,显示数据的方法要考虑两种情况,即在指定位置处插入数据前和在指定位置处插入数据后。在指定位置处插入数据前,应该显示9个数据,而在指定位置插入数据后,应该显示10个数据。到底显示9个还是10个数据的判断标准就是最后一个数组元素是否为0。因此调用方法时传入数组,在方法中循环输出数组元素,在循环中加入一个数组元素是否为0的判断,如果为0则不输出该元素。祝学习愉快!

  • 提问者 石头在唱歌XD #1
    我给k位置插入数据n后再显示数组,发现数组少了一位,什么情况?
    2018-09-22 16:41:30
  • 提问者 石头在唱歌XD #2
    错了 是少了两位,不知道错在哪里?头疼
    2018-09-22 17:16:22
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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