2015-04-29 25 views
1

這是我無法完成的家庭作業任務。我很近,但我無法理解如何完成。任何幫助是極大的讚賞。複製數組並添加1以使用printall()方法返回所有int在新數組中

  • 實現一個類Arrayplus1(),它接受一個整數數組和一個int x作爲它的大小。在Arrayplus1() 類中創建一個新的數組,其長度比數據長度大1。
  • 然後創建一個方法將所有數據的元素複製到新數組中,並將x的值添加到數組的最後一個元素中。
  • 創建一個printall()方法來返回新數組中的所有整數。
  • 我不確定如何處理size = i部分。

代碼:

package addarray19; 

class Arrayplus1{ 
    int[]array ={1,2,3,4,5}; 
    int[]newarray = array; 
    int size; 
    int data; 

    public Arrayplus1(int i){ 
    size = i; 
    } 

    class Arrayadd{ 
    int[]newarray = new int[array.length +1 ]; 
    } 

    void printall(){ 
    for(int i = 0; i < array.length; i++){ 
     newarray[i] = array[i];  
    } 
    array = newarray;  
    } 
    void copy(){ 
    System.arraycopy(array, 0, newarray, 0, array.length); 
    newarray[5] = 5; 
    } 

} 

public class Addarray19{ 
    public static void main(String[] args) { 

    Addarray19 array = new Addarray19(); 
    array.printall(); 
    } 
} 

回答

0

數據的長度,如果我正確地讀你的要求,你應該到int x附加到data陣列。基於這一假設,編寫例程以首先「增長」數據陣列的指令可能很容易實現。首先,將默認值設置爲1(因爲將任何內容添加到空數組應該是一個元素數組)。接下來,檢查data是否爲空。如果它不是'長度並且加上一個作爲size。然後return

static int[] growArray(int[] data) { 
    int size = 1; 
    if (data != null) { 
     size = 1 + data.length; 
    } 
    return new int[size]; 
} 

接着長度size的新int[],你的方法add到所述陣列是先成長它然後複製的值,最後在結束追加新元素。像,

private static int[] addToArray(int[] data, int x) { 
    int[] array2 = growArray(data); 
    if (data != null) { 
     System.arraycopy(data, 0, array2, 0, data.length); 
    } 
    array2[array2.length - 1] = x; 
    return array2; 
} 

然後,你可以實現你的要求Arrayplus1構造像

private int[] data; 
public Arrayplus1(int[] data, int x) { 
    this.data = addToArray(data, x); 
} 

接下來,printall應該這樣做

public void printall() { 
    System.out.print(data[0]); 
    for (int i = 1; i < data.length; i++) { 
     System.out.printf(", %d", data[i]); 
    } 
    System.out.println(); 
} 

最後,您main()方法應該是實例Arrayplus1實例...例如,

public static void main(String[] args) { 
    int[] in = { 1, 2, 3 }; 
    int x = 4; 
    Arrayplus1 a = new Arrayplus1(null, 1); 
    a.printall(); 
    Arrayplus1 b = new Arrayplus1(in, x); 
    b.printall(); 
} 

並且輸出是

1 
1, 2, 3, 4 
0

我認爲你可以俯瞰第一要求。構造函數應該使用一個整數數組和一個int大小。在類大小的int應該代表並記住存儲在INT []數組

class Arrayplus1{ 
    int[] array; 
    int size; 
    public Arrayplus1(int[] a, int i){ 
    array = a; 
    size = i; 

    } 
}