2013-04-28 86 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]); 
    } 

}