-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];
}

この後に書いているメソッドはすべて、「式の型は配列型でなければなりませんが、Exercise_8_13 に解決されます」というエラーを出します。メソッドは、タイプ Exercise_8_13 の引数を取ります。

エラーを防ぐために別のタイプのコンストラクターを作成する必要がありますか? それとも、私が持っているコンストラクターの何かですか? 質問は、引数のないコンストラクターを作成する必要があることのみを指定していました。

同様の問題と思われるこの質問を見ましたが、まだ解決策がわかりません。 式の型は配列型でなければなりませんが、オブジェクトに解決されます

メソッドの例を次に示します。エラーは、a[カウンター]、b[カウンター]、およびintersectionSet[カウンター]の両方のインスタンスでトリガーされます。

    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でありa、typeではありません。とで同じことをしています。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

エラーが発生する理由はよくわかりませんが、私のバージョンのコードを実行しようとしましたが、問題なく動作しました。まず、コンストラクターは、クラスのインスタンスが作成されたときにのみ実行されます。したがって、メイン メソッドで同じインスタンスを作成し、配列の長さを確認するとします。正常に動作するコードは次のとおりです。

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

あなたのコンストラクタは問題ありません。あなたのエラーは、予想される型と、メソッドの 1 つで受け入れるか返そうとしている型との間の不一致を示しています。エラー状態を示しているメソッドの 1 つを共有すると、簡単に見つけることができます。

たとえば、このようなメソッドがある場合、コンパイラは、指定された戻り値の型 (Exercise_8_13) と実際の戻り値の型 (boolean[]) の不一致を認識します。

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