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];
}
}
}
答案 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
区块内。在该块之外,您尚未对其进行定义,从而导致错误。
通常,如果您有一个块{
}
,则该块内定义的变量将仅在该块内可用(并且在它们被定义之后)。