java - 复制数组并使用 printall() 方法将其大小加 1 以返回新数组中的所有 int

标签 java arrays

这是一项我未能完成的家庭作业。我已经很接近了,但我无法理解如何完成。任何帮助是极大的赞赏。

  • 实现一个 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();
  }
}  

最佳答案

如果我正确地阅读了您的要求,您应该将 int x 附加到您的 data 数组中。基于该假设,编写例程以首先“增长”数据数组的指令可能很容易实现。首先,将默认值设置为 1 (因为向空数组添加任何内容都应该是单元素数组)。接下来,检查 data 是否不为空。如果不是,则取其长度并添加 1 作为大小。然后返回一个新的int[],长度为size,如

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

接下来,向数组添加的方法是首先增大数组,然后复制值,最后在末尾附加新元素。就像,

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

关于java - 复制数组并使用 printall() 方法将其大小加 1 以返回新数组中的所有 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932911/

相关文章:

java - 插入排序

c - 在 C 中实现排序数组的二进制搜索

java - 无法从java应用程序在数据库中创建表

java - 持久化 Java 对象的最简单方法是什么?

java - Spring TCP 通过传入连接发送数据

java - 通过 Rest 的 Cypher 请求返回 400 Bad Request,为什么?

java - 如何将 onclick 监听器设置为 Canvas ?

python - 标准化的 numpy/scipy `asarray` 装饰器

javascript - 如何在幻灯片中设置计时器以显示所选内容?

javascript - 如何仅从 JSON 数据获取最后 10 个对象