指定位置插入数据那块出错,请帮忙找一下问题

指定位置插入数据那块出错,请帮忙找一下问题

public void insertArray(int[] a) {
		System.out.println("请输入要插入的数据:");
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		System.out.println("请输入要插入数据的位置(0-9):");
		int k = s.nextInt();
		
		for (int i = (a.length - 1); i >k; i--) {
			a[i+1] = a[i];
		}
		a[k] = n;
	}

	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(5 + "--退出");
		System.out
				.println("****************************************************");
		System.out.println("请输入对应的数字进行操作:");
	}

	public static void main(String[] args) {
		Array array = new Array();
		int a[] = new int[10];
		while (true) {
			array.notice();

			Scanner s = new Scanner(System.in);
			int m = s.nextInt();
			switch (m) {
			case 1:
				a = array.insertData();
				array.showData(a);
				break;
			case 2:
				array.showData(a);
				break;
			case 3:
				array.insertArray(a);
				array.showData(a);
				break;
			case 4:
				array.divThree(a);
				break;
			case 5:
				System.exit(0);
			default:
				System.out.println("输入错误,请重新输入");
			}

		}
	}


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

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

1回答
耶嘿呦呦奥 2017-08-01 14:51:48

在指定位置插入数据方法中,在for循环中进行数组移位的时候,应该将 a[i+1] = a[i]修改为 a[i] = a[i-1],不然,就会导致插入数据的时候造成数组索引越界异常。

如果解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 syni_dora #1
    改不改这个,都有问题,每次输入新数据和插入位置后再往下就无法执行了
    2017-08-01 16:18:34
  • 提问者 syni_dora #2
    问题已解决
    2017-08-01 16:51:26
  • nooone 回复 提问者 syni_dora #3
    怎么解决的?
    2018-06-01 15:35:25
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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