//Question
String readyOne = console.readLine("Are you ready for your first question? ");
console.printf(readyOne);
if (readyOne.equalsIgnoreCase("yes")) {
String questionOne = console.readLine("1 + 1 = ");
console.printf(questionOne); }
//Answer
if (questionOne.equals("2") ||
questionOne.equalsIgnoreCase("two")) {
console.printf("Well done");
}
错误:
symbol: variable questionOne
location: class oldjack
oldjack.java:36: error: cannot find symbol
questionOne.equalsIgnoreCase("two")) {
^
symbol: variable questionOne
location: class oldjack
2 errors
答案 0 :(得分:7)
这是典型代码形成的典型例子:
String readyOne = console.readLine("Are you ready for your first question? ");
console.printf(readyOne);
if (readyOne.equalsIgnoreCase("yes")) {
String questionOne = console.readLine("1 + 1 = ");
console.printf(questionOne);
} // lifeness of questionOne ends here
// Answer
if (questionOne.equals("2") || questionOne.equalsIgnoreCase("two")) {
console.printf("Well done");
}
变量questionOne
仅在第一个if
- 块
要修复代码,您可能希望将第二个if
移到第一个if
:
String readyOne = console.readLine("Are you ready for your first question? ");
console.printf(readyOne);
if (readyOne.equalsIgnoreCase("yes")) {
String questionOne = console.readLine("1 + 1 = ");
console.printf(questionOne);
// Answer
if (questionOne.equals("2") || questionOne.equalsIgnoreCase("two")) {
console.printf("Well done");
}
}
答案 1 :(得分:1)
在Java中,变量范围在块级别上工作。您在{ ... }
大括号中看到的任何块都有自己的范围。
变量范围意味着在更深(或#34;兄弟")范围内声明的变量在其他范围内不可见。
你有类似
的东西if (condition) {
String x = "";
}
if (x.equals("2")) {
...
}
此代码的问题是x
(在您的情况下,questionOne
)仅在我们进入if
块时才会被声明。想象一下,如果不满足条件(在您的情况下为readyOne.equalsIgnoreCase("yes")
),则不会声明questionOne
。
您需要的是在questionOne
块之外声明if
,并在满足条件时将其设置为不同的值。
答案 2 :(得分:1)
questionOne
是声明它的块的本地。你需要在该块之外声明它。
String questionOne;
if (readyOne.equalsIgnoreCase("yes")) {
questionOne = console.readLine("1 + 1 = ");
console.printf(questionOne);
} else {
questionOne = ... // Needs to be assigned here too.
}
答案 3 :(得分:0)
变量questionOne
在块中声明为 - 在if
条件之后的块。
因此它仅在该块内可用。一旦你在那个街区之外(下一个if
在外面),那么它就不再存在了。
您需要在声明if
的块内移动第二个questionOne
。它不在外面也是不合逻辑的,因为在if
以外你不知道答案是yes
还是no
还是什么。