2013-04-28 51 views
2

此方法插入的输入为int[] array,int elementint index,其将element插入arrayindex位置。由于数组的大小不可调整,所以该方法将数组右侧的每个元素移动一位。最后的元素从数组中移除。该方法返回void在java方法中正确输入int []?

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[]并写了一个主要的方法来打印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)); 
    } 
} 

我有问题,得到这个print语句工作。这可能很简单,但我已经连续两天学习决赛,所以我非常聪明。

我很确定我打电话insert方法就好,但我认为我的问题是我没有正确输入int[]类型。我不知道我应该如何做到这一点。

+1

你看到什么印刷,你期望看到什么?我认为你会想使用java.util.Arrays类的'toString(...)'方法。作为在这里提问的经验法则,您需要尽可能多地提供相关信息,以便我们能够很好地理解您的问题并更好地回答问题。 – 2013-04-28 20:26:35

+0

我只想看看数组中元素的最终值,以测试我的插入方法是否正常工作。 – user2133735 2013-04-28 20:28:42

+0

由于您有兴趣测试您的Java程序,因此您应该了解并使用JUnit测试框架。为了使其运行良好,您还应该避免编写静态方法,因为它们更难以测试。使'insert'方法变为非''静态',并在你的main方法中创建一个'ShiftElements'对象,并调用'insert'。 – 2013-04-28 20:33:16

回答

3

我猜你正在寻找的是:

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

除了使用java.util.Arrays.toString方法当心,你是传递insert方法的参数: 第一个参数应该是int数组。但你通过一个int

+0

。 1 +投票。 – 2013-04-28 20:26:50

3

1)insert的第一个参数是一个int数组,而不是一个int数组。你必须调用:

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

2)您不能打印一个数组:所以要用:

println(Arrays.toString(insert(...))) 
+0

没有像传递'new int [4]'一样传递'new int [] {4}'?只是想知道语法。 (在java中仍然是个noob) – user2133735 2013-04-28 22:08:46

+0

new int [] {4}用一个元素创建一个数组:4(array.length == 1)。 new int [4]创建一个包含4个元素的数组(array.length == 4)。这4个元素没有初始化,所以它们的默认值为:0 – Thierry 2013-04-29 05:45:34

1

你打了一个电话给insert(int,int,int) eventhough您的插入签名是insert(int[],int,int)。例如,要求插入使用数组文本会像这样:

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)); 
2
System.out.print(insert(4,5,3)); 

那语句不传递整数数组,只传递整数4.你需要传递,因为你的函数被定义为int [],int,int。

System.out.print(insert(new int[4],5,3)); 
+0

谢谢,这是我找不到的主要问题之一! – user2133735 2013-04-28 22:07:34

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]); 
    } 

}