-1

我正在解决一个问题,我需要一个由布尔数组表示的类。这是我唯一的构造函数。

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”。这些方法采用练习_8_13 类型的参数。

我是否需要制作另一种类型的构造函数来防止错误?或者它是我拥有的构造函数中的东西?该问题仅指定必须创建无参数构造函数。

我看过这个问题,这似乎是一个类似的问题,但我仍然不明白解决方案。 表达式的类型必须是数组类型,但解析为 Object

这是一个示例方法,错误在 a[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;
                    }
            }
    }
4

3 回答 3

2

即使是 type ,而不是type ,您也可以通过编写来将a其视为数组。你对and做同样的事情。booleana[counter]aExercise_8_13boolean[]bintersectionSet

你想签到integerSet[counter]a所以a[counter]改成a.integerSet[counter]

b[counter]对和做同样的事情intersectionSet[counter]

于 2013-04-28T00:31:34.770 回答
0

我不太清楚你为什么会收到错误,但我尝试运行我的代码版本并且它工作正常。首先,构造函数仅在创建类的实例时运行。因此,如果您在 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);
    }
}
}
于 2013-04-27T23:24:16.300 回答
0

你的构造函数很好。您的错误表明预期类型与您尝试在其中一种方法中接受或返回的类型不匹配。如果您共享其中一种呈现错误情况的方法,则很容易发现它。

例如,如果您有一个看起来像这样的方法,那么您的编译器将识别出声明的返回类型 (Exercise_8_13) 和实际的返回类型 (boolean[]) 之间的不匹配。

public Exercise_8_13 copy() {
    return this.integerSet;  // deliberate bug
}
于 2013-04-27T23:39:20.287 回答