1

TERADENWOORDEN[0][0] = 本、[0][1] = ロード オブ ザ リングの配列です。

CATEGORIES= カテゴリの数

geefNamenCatを返すメソッドinput.readString()ですgekozenCat

私はここで何か間違っていますか?

public void catKiezen() {
   boolean bevatGekozen = false;
   String gekozenCat
    do {
        gekozenCat = geefNamenCat();
        for (String[] TeradenwoordenLijst : Arrays.asList(TERADENWOORDEN))
            if (Arrays.asList(TeradenwoordenLijst).contains(gekozenCat)) {
                bevatGekozen = true;
                break;
            }
        if (! bevatGekozen) {
            System.out.println("De opgegeven categorie is ongeldig.");
        }
    } while (! bevatGekozen);
   String woordVanCat = woordBepalen (gekozenCat);
}

public String woordBepalen(String teBepalenWoordVanCat) {
    for (int p = 0; p < CATEGORIES; p++)
       if (TERADENWOORDEN[p][0].equals(teBepalenWoordVanCat))
       return TERADENWOORDEN[p][1];
}

最後cannot find symbolに、行のエラーが発生しますString woordVanCat = woordBepalen (gekozenCat);

アップデート:

「missing return statement」というメッセージが表示されるようになりました

public String woordBepalen(String teBepalenWoordVanCat) {
    for (int p = 0; p < CATEGORIES; p++) {
        if (TERADENWOORDEN[p][0].equals(teBepalenWoordVanCat)) {
        return TERADENWOORDEN[p][1];
        }
    }
}
4

3 に答える 3

5

do-while 内で宣言しString gekozenCat = geefNamenCat();、ループ外でアクセスしようとしています。gekozenCatあなたの内にのみ閉じ込められていますdo-whiledo-whiledo-whileの外でアクセスしたい場合は、外で宣言してください。

于 2013-01-05T17:54:28.630 に答える
2

私が見る限り、あなたのメソッドwoordBepalenはコンパイルされません。コンパイラは、返す値が明確に定義されているかどうかわからないためです。

public String woordBepalen(String teBepalenWoordVanCat) {
    for (int p = 0; p < CATEGORIES; p++)
       if (TERADENWOORDEN[p][0].equals(teBepalenWoordVanCat))
       return TERADENWOORDEN[p][1];
}

編集

保留がない場合に何を返すかを定義する必要がありp TERADENWOORDEN[p][0].equals(teBepalenWoordVanCat)ます。このような:

 public String woordBepalen(String teBepalenWoordVanCat) {
        for (int p = 0; p < CATEGORIES; p++) {
           if (TERADENWOORDEN[p][0].equals(teBepalenWoordVanCat))
             return TERADENWOORDEN[p][1];
        }
        return null;
 }

戻るnullことが正しいことかどうかを判断するのはあなた次第です。別の可能性は、例外をスローすることです

于 2013-01-05T17:55:59.867 に答える
1

のスコープはgekozenCatブロック内do..whileです。そのブロックの外では、それを定義していないため、エラーが発生します。

一般に、 block がある場合、{ }そのブロック内で定義された変数は、そのブロック内 (およびそれらが定義された後) でのみ使用できます。

于 2013-01-05T17:56:05.047 に答える