2

此方法 insert 将, 和作为输入int[] array,插入到 的位置。由于数组不可调整大小,因此该方法将数组右侧的每个元素移动一个。最后的元素从数组中删除。该方法返回。int elementint indexelementindexarrayvoid

public class ShiftElements {
public static void insert(int[] array, int element, int index)
{
    for (int i = array.length-1; i > index; i--)
    {
        array[i] = array[i-1];
    }
    array[index] = element;
    }
}

为了测试这个方法是否有效,我将返回类型更改为int[]并编写了一个 main 方法来 print array

public class ShiftElements {
public static int[] insert(int[] array, int element, int index)
{
    for (int i = array.length-1; i > index; i--)
    {
        array[i] = array[i-1];
    }
    return array;
}
public static void main(String[] args) {
        System.out.print(insert(4,5,3));
    }
}

我遇到了问题,让这个打印语句起作用。这可能很简单,但我已经为期末考试准备了两天,所以我很脑残。

我很确定我调用该insert方法很好,但我认为我的问题是我没有正确输入 type int[]。我不确定我应该怎么做。

4

5 回答 5

3

我想你正在寻找的是:

int[] i = new int[5];
System.out.print(java.util.Arrays.toString(insert(i,5,3)));

除了使用java.util.Arrays.toString方法注意你在insert方法中传递的参数:第一个参数应该是一个数组int。但是你正在传递一个int.

于 2013-04-28T20:26:35.430 回答
3

1)insert的第一个参数是一个int数组,不是int。您必须致电:

insert(new int[]{4},5,3)

2)你不能打印一个数组:所以使用:

println(Arrays.toString(insert(...)))
于 2013-04-28T20:27:17.643 回答
2
System.out.print(insert(4,5,3));

该语句不传递整数数组,您只传递了整数 4。您需要传递,因为您的函数已定义,int [],int,int。

System.out.print(insert(new int[4],5,3));
于 2013-04-28T20:33:50.490 回答
1

尽管您的insert(int,int,int)插入签名是insert(int[],int,int). 例如,使用数组字面量调用 insert 就像这样:

insert(new int[]{1,2,4,5}, 3, 2);

此外,System.arraycopy是一种更快、更优雅的复制数组的方法。您似乎也忘记了在第二个示例中将元素设置在其索引处:

public static int[] insert(int[] array, int element, int index)
{
    // Use arraycopy to shift all the elements by one, running over the last index
    System.arraycopy(array, index, array, index+1, array.length-index-1);

    // Set the appropriate index in the array to the specified value
    array[index]=element;

    return array;
}

如果然后运行以下命令,您将获得预期的输出:

int[] array =  {1, 2, 4, 5};
insert(array,3,2); // array is now {1,2,3,4}
System.out.println(java.util.Arrays.toString(array));
于 2013-04-28T20:32:19.473 回答
0

如果您要打印数组,那么最外行的过程是返回特定数组并循环抛出它以打印其元素。例如:

public static void main(String[] args) {
    int []solution= insert(new int[4],5,3);
    for(int i=0;i<solution.length;i++)
    {
     System.out.println(solution[i]);
    }

}
于 2013-04-28T20:45:03.433 回答