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

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

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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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