【问题标题】:Java: Arrays/methods: Cannot find symbolJava:数组/方法:找不到符号
【发布时间】:2013-01-05 17:52:51
【问题描述】:

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

【问题讨论】:

  • +1 表示变量名
  • 这是荷兰语,对不起:p

标签: java arrays methods


【解决方案1】:

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

【讨论】:

  • 你为什么不尝试编译它?
  • 好吧,这确实起到了作用,我现在感觉很愚蠢。无论如何,它给了我一个新的错误。缺少退货声明。我猜这是因为返回也在循环内?我已经更新了原帖
  • @Jente 绝对,检查格非答案。他在回答中提到了它:)
  • 非常感谢大家。也超快! :)
【解决方案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 是否正确。另一种可能性是抛出异常

【讨论】:

  • Sjuan76 预测未来。我猜也有一些简单的解决方法?
  • 太棒了!非常感谢你们。如果可以的话,我会投票,但我还需要 4 个代表;p
【解决方案3】:

gekozenCat 的范围在 do..while 块内。在该块之外,您尚未定义它,因此会导致错误。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多