Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中创建对象数组_Java_Arrays_Object - Fatal编程技术网

在Java中创建对象数组

在Java中创建对象数组,java,arrays,object,Java,Arrays,Object,我已经把这段代码作为课堂作业开始了。我们将设置一个类来创建一个对象数组。我们应该有两个构造函数,这样就可以用给定的大小或默认大小100初始化数组。这是我到目前为止所拥有的 public class Set { private int maxObjects; private int sz; public Set(int maxObjects) { this.maxObjects = maxObjects; this.sz = maxObj

我已经把这段代码作为课堂作业开始了。我们将设置一个类来创建一个对象数组。我们应该有两个构造函数,这样就可以用给定的大小或默认大小100初始化数组。这是我到目前为止所拥有的

public class Set {

    private int maxObjects;
    private int sz;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        Object[] a = new Object[maxObjects];
    }

    public Set() {
        this.maxObjects = 100;
        this.sz = 100;
        Object[] a = new Object[100];
    }

    public void add(Object object) {
        a[0] = Object;
    }

我遇到的问题是,它没有将
a
视为
add()
方法中的变量。另外,数组应该用一个设置的容量初始化,但是为空,我不知道怎么做

您已经非常接近正确的答案了。您遇到的问题与变量的范围有关。仔细检查变量a的范围

您的add方法中也有一个输入错误

a[0] = Object 
应该是

a[0] = object 

(小写字母o)

您很快就能得到正确的答案。您遇到的问题与变量的范围有关。仔细检查变量a的范围

您的add方法中也有一个输入错误

a[0] = Object 
应该是

a[0] = object 

(小写o)

您应该在定义maxObjects和sz的同一位置定义
a

private Object[] a;
然后将其放入构造函数中:

a = new Object[maxObjects];

阅读关于这个问题的文章

您应该在定义maxObjects和sz的同一位置定义
a

private Object[] a;
然后将其放入构造函数中:

a = new Object[maxObjects];
阅读关于这个问题的文章

它没有将
a
视为
add()
方法中的变量

您的问题是
a
是在
Set
构造函数中声明的,因此它是构造函数的本地。这意味着它不能在构造函数之外使用(例如从
add
方法)

解决方案非常简单。使用其他字段声明
a

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        this.a = new Object[maxObjects];
    }

    public Set() {
        this.maxObjects = 100;
        this.sz = 100;
        this.a = new Object[100];
    }

    public void add(Object object) {
        a[0] = object;
    }
}
我建议阅读Java中的scopes(一个简单的Google搜索将在那里产生帮助)

此外,阵列应该使用设置的容量初始化,但为空

这是默认情况下完成的。对于任何非基元类型的数组,数组的元素都初始化为
null
。这里,all-
null
数组本质上是一个空数组。调用
新对象[capacity]
就是为了您

它没有将
a
视为
add()
方法中的变量

您的问题是
a
是在
Set
构造函数中声明的,因此它是构造函数的本地。这意味着它不能在构造函数之外使用(例如从
add
方法)

解决方案非常简单。使用其他字段声明
a

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        this.a = new Object[maxObjects];
    }

    public Set() {
        this.maxObjects = 100;
        this.sz = 100;
        this.a = new Object[100];
    }

    public void add(Object object) {
        a[0] = object;
    }
}
我建议阅读Java中的scopes(一个简单的Google搜索将在那里产生帮助)

此外,阵列应该使用设置的容量初始化,但为空

这是默认情况下完成的。对于任何非基元类型的数组,数组的元素都初始化为
null
。这里,all-
null
数组本质上是一个空数组。调用
新对象[capacity]
就是为您这样做。

两件事:

  • a
    应该是一个字段
  • 默认构造函数应该调用另一个构造函数
  • 打字错误
试试这个:

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        a = new Object[maxObjects];
    }

    public Set() {
        this(100);  // fyi, this is the syntax for calling another constuctor
    }

    public void add(Object object) {
        a[0] = object;
    }
}
两件事:

  • a
    应该是一个字段
  • 默认构造函数应该调用另一个构造函数
  • 打字错误
试试这个:

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        a = new Object[maxObjects];
    }

    public Set() {
        this(100);  // fyi, this is the syntax for calling another constuctor
    }

    public void add(Object object) {
        a[0] = object;
    }
}

您不需要语句的后半部分,这将初始化大小为0的数组。数组引用“a”将在构造函数中重新分配。在顶部分配它只会导致垃圾收集器做更多的工作。您不需要语句的后半部分,这将初始化大小为0的数组。数组引用“a”将在构造函数中重新分配。在顶部分配它只会给垃圾收集器带来更多的工作。