在Java中创建对象数组
我已经把这段代码作为课堂作业开始了。我们将设置一个类来创建一个对象数组。我们应该有两个构造函数,这样就可以用给定的大小或默认大小100初始化数组。这是我到目前为止所拥有的在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
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”将在构造函数中重新分配。在顶部分配它只会给垃圾收集器带来更多的工作。