该方法应该采用整数数组,整数值和整数索引。该方法应该在给定索引处插入值,然后将值移动一个。
例如这个
insertValue(a, 100, 2)
会将数组{1, 2, 3, 4, 5}
更改为{1, 2, 100, 3, 4}
这是我用来执行方法的代码:
public static void main(String[] args) {
int[] and = {4,2,6,1,4,3,4};
insertValue(and, 100, 2);
}
这是方法本身:
public static void insertValue(int[] a,int b , int c) {
for(int i = c; i < a.length-1; i++) {
a[i+1] = a[i];
System.out.print(a[i]);
}
a[c] = b;
System.out.print(a[c]);
}
这是我得到的输出:
6666100
所以它不仅仅是一个数字,它也停在错误的位置。这是一个家庭作业,所以解释我出错的地方会有所帮助。
答案 0 :(得分:1)
由于数组长度为7,b
为2且n
为100,因此您的方法执行此操作:
// array originally contains {4,2,6,1,4,3,4}
a[3] = a[2];
// array now contains {4,2,6,6,4,3,4}
System.out.print(a[2]); // prints 6
a[4] = a[3];
// array now contains {4,2,6,6,6,3,4}
System.out.print(a[3]); // prints 6
a[5] = a[4];
// array now contains {4,2,6,6,6,6,4}
System.out.print(a[4]); // prints 6
a[6] = a[5];
// array now contains {4,2,6,6,6,6,6}
System.out.print(a[5]); // prints 6
a[2] = 100;
// array now contains {4,2,100,6,6,6,6}
System.out.print(a[100]); // prints 100
这就是您获得输出6666100
。
答案 1 :(得分:0)
for(int i = c; i < a.length-1; i++) {
a[i+1] = a[i];
System.out.print(a[i]);
}
尝试复制数组的“结束”以为新项目腾出空间。
如果c=2
那么循环说:
a[3] = a[2]
a[4] = a[3]
a[5] = a[6]
换句话说,你正在编写数组的内容 - 你将索引3复制到4,但现在你已经丢失了4,所以你不能复制4到5(因为它的值被覆盖)< / p>
最简单的方法是从最后开始,在向c
答案 2 :(得分:0)
您需要从数组的末尾开始并向后复制元素,直到达到替换索引。然后在该索引处插入元素。下面的循环应该能够:
for(int i = a.length - 2; i >= c; i--){
a[i+1] = a[i];
System.out.println(a[i]);
}
a[c] = b;