我正在尝试创建对象Iset的实例。当人创建对象时,他们必须给出一个整数,该整数将是一个布尔数组的大小,该布尔数组将存储一组整数,例如1将是Iset [1] = true等。但是我一直使索引超出范围错误。程序的其余部分显然会忽略我在构造函数中设置的值,那么如何确保在我的所有方法中都使用构造函数中使用的值?
代码的第一部分:
public class Iset { public int size; boolean[] Iset; ISet(int a) { int size = a; seti = new boolean[size];
让我们看看您的代码:
public class Iset { public int size;// Declares a Member of a class and all the objects will have a copy of this member boolean[] Iset; ..... } ISet(int a) { int size = a; //This line is declaring a **local variable** called size seti = new boolean[size]; ... }
在构造函数中,您已经看到创建了局部变量,size但是在类中也有一个称为类的成员size 。因此,在这种情况下,每当我们尝试size在构造函数中设置变量时,无论是设置局部变量还是类成员,编译器都会发生冲突(此冲突是因为局部变量和类成员都具有相同的名称) 。 在这种情况下,编译器会选择局部变量的大小而不是类成员的大小 。但是,要确保在构造函数中使用的值在我的所有方法中都已使用, 则必须设置class member 。要设置类成员,我们使用以下代码:
size
this.size = a;//Says set the object member size to value present in a.
在这里,我们使用 此 指针来引用大小, 因为我们需要设置对象的大小变量,而不是局部变量size 。