对象数组中的java访问变量
我正在创建一个类来对一些数据进行排序
class data{
public String text;
public String day;
public String direction;
}
dados vetor[]={};
现在我必须改变一个变量,我是这样做的:
vetor[0].text="dumb text";
但我发现了这个错误:
尝试写入java字段。空对象引用上的lang.字符串
# 1 楼答案
你可能做过这样的事情:
但是现在
vetor[0]
包含text
字段的值(即aString
)。 以后不能通过执行vetor[0]
来访问text
字段。这是指存储在该数组中的String
。因此,如果以后text
字段的值发生变化,向量仍将包含旧的因此
vetor[0].text="dumb text";
没有为data
类的某个实例赋值text
字段,而是试图为vetor[0]
产生的字符串赋值编辑:如果要更改
text
字段的值:如果你想制作一个数组(字符串?或数据对象?)
如果您想从
arr
中的数据对象存储访问/分配,例如text
如果你不知道前面的长度,你就不能使用数组(因为它们是固定长度的)。相反,您可以使用长度可变的
List
将此应用于代码:
要对
dados
个对象中的ArrayList
进行排序,您应该实现一个自定义比较器,以便按照您的需要对对象进行排序实际排序
# 2 楼答案
我假设你的班名是“护墙板”,而不是“数据”。 您的数组没有任何元素,因此会出现错误。 将数组初始化为一定数量的元素,然后指定text属性
# 3 楼答案
除非您将数组重新分配给其他对象,否则这就是您的问题
您创建了一个空数组-vetor[0]中没有数据对象可供您设置其文本。如果在声明数组时知道元素的数量,可以使用以下方法创建一个数组来保存所有元素
要在该数组中实际创建元素并设置其文本,需要创建一个新对象
或者,在将数据对象添加到数组之前,为其创建并设置值: