对于在数组移位器

时间:2016-12-14 02:45:04

标签: java arrays

该方法应该采用整数数组,整数值和整数索引。该方法应该在给定索引处插入值,然后将值移动一个。

例如这个 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

所以它不仅仅是一个数字,它也停在错误的位置。这是一个家庭作业,所以解释我出错的地方会有所帮助。

3 个答案:

答案 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;