复制数组并使用printall()方法将1添加到其大小以返回新数组

时间:2015-04-29 01:40:56

标签: java arrays

这是我无法完成的家庭作业。我很接近,但我很难理解如何完成。任何帮助是极大的赞赏。

  • 实现一个类Arrayplus1(),它接受整数数组数据和int x作为其大小。在类Arrayplus1()中创建一个方法 这将创建一个长度比数据长度大一个的新数组。
  • 然后创建一个方法将所有数据的元素复制到新数组中,并将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();
  }
}  

2 个答案:

答案 0 :(得分:0)

我认为你忽略了第一个要求。构造函数应该使用BOTH整数数组和大小的int。类中的int应该表示并记住int [] array

中存储的数据的长度
class Arrayplus1{
  int[] array;
  int size;
  public Arrayplus1(int[] a, int i){
    array = a;
    size = i; 

  }
}

答案 1 :(得分:0)

如果我正确地阅读了您的要求,您应该将int x附加到data数组中。基于这个假设,将例程写入第一个&#34;增长&#34;数据数组可能很容易实现。首先,将默认值设置为1(因为向空数组添加任何内容应该是一个元素数组)。接下来,检查data是否为空。如果它没有采取它的&#39;长度并添加一个size。然后return新的int[]长度为size,如

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

接下来,你对数组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