Java中数组的构造函数
我正在解决一个问题,我需要一个由布尔数组表示的类。这是我唯一的构造函数Java中数组的构造函数,java,Java,我正在解决一个问题,我需要一个由布尔数组表示的类。这是我唯一的构造函数 private boolean[] integerSet; private static final int ARRAY_LENGTH = 101; // set will always be 0-100 // no argument constructor // creates set filled with default value false public Exercise_8_13() { integer
private boolean[] integerSet;
private static final int ARRAY_LENGTH = 101; // set will always be 0-100
// no argument constructor
// creates set filled with default value false
public Exercise_8_13()
{
integerSet = new boolean[ARRAY_LENGTH];
}
在这之后我写的方法都给出了错误“表达式的类型必须是数组类型,但它被解析为练习_8_13”。这些方法采用的参数类型为Exercise_8_13 我是否需要创建另一种类型的构造函数来防止错误?还是我的构造器里有什么东西?问题只指定必须创建无参数构造函数 我已经看过这个问题,这似乎是一个类似的问题,但我仍然不明白解决办法。 下面是一个示例方法,错误在[counter]、b[counter]和intersectionSet[counter]的两个实例上触发
public static void intersection(Exercise_8_13 a, Exercise_8_13 b)
{
Exercise_8_13 intersectionSet = new Exercise_8_13();
for (int counter = 0; counter < ARRAY_LENGTH; counter++)
{
if ((a[counter] = false) || (b[counter = false]))
{
intersectionSet[counter] = false;
}
else
{
intersectionSet[counter] = true;
}
}
}
公共静态无效交叉口(练习8\u 13 a、练习8\u 13 b)
{
练习_8_13交叉集=新练习_8_13();
用于(int计数器=0;计数器<数组长度;计数器++)
{
如果((a[计数器]=假)|(b[计数器=假])
{
交叉集[计数器]=假;
}
其他的
{
相交集[计数器]=真;
}
}
}
我不太清楚为什么会出现错误,但我已尝试运行我的代码版本,效果良好。首先,构造函数仅在创建类的实例时运行。因此,如果在main方法中创建相同的实例,并检查数组的长度。下面是运行良好的代码
public class Exercise_8_13{
private static boolean[] integerSet ;
private static final int ARRAY_LENGTH = 101;
public Exercise_8_13()
{
integerSet =new boolean[ARRAY_LENGTH];
}
public static void main(String args[])
{
Exercise_8_13 z = new Exercise_8_13();//new instance being created
if(integerSet!=null)
{
System.out.println("Success " +integerSet.length);
}
}
}
你的构造函数很好。您的错误表示预期类型与您试图在其中一个方法中接受或返回的类型不匹配。如果您共享其中一个表示错误条件的方法,则很容易发现错误 例如,如果您有一个类似于此的方法,那么编译器将识别所述返回类型(练习8_13)和实际返回类型(布尔[])之间的不匹配
通过编写
a[计数器]
,您将a
视为一个boolean
数组,即使a
属于Exercise\u 8\u 13
类型,而不是boolean[]
。您对b
和intersectionSet
也进行了同样的操作
您想在a
中检查integerSet[counter]
,因此将a[counter]
更改为a.integerSet[counter]
对
b[counter]
和intersectionSet[counter]
执行相同的操作,向我们展示您正在谈论的方法…我在这之后编写的方法都给出了错误“表达式的类型必须是我添加该方法的数组类型。对不起!在一个不相关的注释中,名称为“integerSet”“对于描述布尔值数组的东西来说有点不寻常。非常感谢。这个回答真的帮助我理解了。
public Exercise_8_13 copy() {
return this.integerSet; // deliberate bug
}