有人能解释一下为什么不行吗?错误位于 obj[0][0]=1;
. 它说gpa不能被转换成int,对于 String
变量赋值 s
.
public class GPA {
public String s;
public int n;
public GPA[][] a;
//constructor
public GPA(GPA[][] a){}
public static void main(String[] args) {
GPA[][] obj=new GPA[2][2];
obj[0][0]=1; //error here
}
}
5条答案
按热度按时间ohtdti5x1#
obj
是gpa对象的数组。obj[0] = 1
意味着您要将该数组的第一个元素指定给int
价值观。它应该是一个object
gpa类型。你可以这样做我还建议使用java约定,通过
variables
私人和set()
通过公开的方式,比如setter()
s。问题变了,答案就变得无关紧要了。
6qqygrtg2#
它将不起作用,并给你编译时错误,因为gpa是类类型,你试图分配int值给它。
你有两个选择。
方案1:
方案2:
您可以将gpa的成员设为私有,并使用setter设置值。下面是一个例子。
然后使用setter设置。
公开你的成员不是一个好的编程实践。通常建议使用setter。
hmmo2u0o3#
对于对象数组,必须首先在该位置的对象上创建。否则你会得到一个
NullPointerException
. 所以你需要这样的东西每个职位都是如此。
kzmpq1sx4#
实际上,您所做的是尝试将int和/或string赋给需要gpa类的对象的变量。你不想做吗
w8biq8rn5#
java数组是同质的(javascript数组是异构的)。这意味着您只能存储创建数组时使用的元素类型。
现在,将同样的规则应用于
public GPA[] a;
这里是gpa类型的数组。所以它只接受gpa类型的对象。也就是说,你可以存储如下的值
a[0]=新的gpa(“namehere”,6);
如果我想存储一个字符串或一个int,一次一个(我必须制作一个学生姓名与平均成绩表),我该怎么做?
这个需求的一个解决方案是,使用构造函数或setter方法分配一个变量。
希望这有助于。。。