2014-03-01 243 views
-6

因此,我必須編寫一個名爲「insert」的新類方法。什麼插入操作,是否需要參數Item [] array,Item newitem和int k,並將新項插入到索引爲k的數組中。Java學校練習

此代碼的一部分,我可以更改,部分代碼我不能。這裏是一部分,我不能改變:

說明原先提出:

寫了一類新方法,插入,Item類帶有三個參數 - 一個項目[]數組,一個項目的newitem,和一個int k - 並將newItem插入到索引爲k的數組中,放棄數組的最後一項(即最初位於索引array.length - 1的項目)。

這裏是不變的代碼:

public class Item 
{ 
    private int myN; 

    public Item(int n) 
    { 
    myN = n; 
    } 

    public String toString() 
    { 
    return "Item:" + myN; 
    } 

    public int getN() 
    { 
    return myN; 
    } 

    public static Item[] makeItemArray(int len) 
    { 
    Item[] a = new Item[ len ]; 
    int i; 
    for (i = 0 ; i < len ; i++) 
     a[ i ] = new Item(i); 
    return a; 
    } 

    public static void displayArray(Item[] array) 
    { 
    for (Item item : array) 
     System.out.println(item); 
    } 

//這小部分,我可以改變:

public static void insert(Item[] array, Item newItem, int k) 

{ 

    a[i] = a[i + 1]; 

} 

//這是所有我可以改變

} 

public class MainClass 
{ 
    public static void main(String[] args) 
    { 
    Item[] array = Item.makeItemArray(); 

    System.out.println("Before: "); 
    Item.displayArray(array); 

    // make a new Item 
    Item newItem = new Item(99); 

    // insert the new item 
    Item.insert(array, newItem, ); 

    System.out.println("\nAfter: "); 
    Item.displayArray(array); 
    } 
} 

我得到一個「找不到符號」錯誤。

UPDATE:

我嘗試了這樣的:

公共靜態無效插入件(項[]數組,項目的newitem,INT K)

{

的for(int i = 0; i < array.length() - 1; i ++){

array[i] = array[i-1]; 

}

}

我仍然得到同樣的錯誤,只需用for循環,而不是 「陣列[I] =陣列[I-1]」 中的錯誤消息的第一行。

+2

你從哪裏得到那個錯誤? –

+0

在'insert'方法中,你的'i'和你的'a'是什麼?這就是你的問題...... –

回答

0

在你的代碼中,我沒有定義。一個都不是。您需要在此處編寫一些代碼將k後面的所有元素移動到數組的末尾。

+0

什麼樣的代碼會在k加1後移動所有的元素?我只是想從概念上想,我該怎麼做? – user3363511

+0

A for循環會執行此操作,但先移動最後一個,以免覆蓋每個循環。 for(int i = ...; i> ...; --i)array [i] = array [i-1]; –

0

這永遠不能編譯。原因是你永遠不會聲明名爲「a」的變量或名爲「i」的變量

+0

在我無法編輯的部分中沒有定義它。在編輯它們之前沒有任何部分,這是可編輯的。我可以在代碼段後面的代碼中定義一些東西嗎? – user3363511