Java:数组/方法:找不到符号

时间:2013-01-05 17:52:52

标签: java arrays methods

TERADENWOORDEN是数组,[0] [0] = book,[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);

更新

我现在正在收到'缺少退货声明'

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

3 个答案:

答案 0 :(得分:5)

您已在行动中声明String gekozenCat = geefNamenCat();,并尝试在循环外访问它。gekozenCat仅在您的do-while受限。如果你想在你做的时间之外访问它,请在do-while之外宣布它。

答案 1 :(得分: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。另一种可能性是抛出异常

答案 2 :(得分:1)

gekozenCat的范围位于do..while区块内。在该块之外,您尚未对其进行定义,从而导致错误。

通常,如果您有一个块{ },则该块内定义的变量将仅在该块内可用(并且在它们被定义之后)。