假设:
11. public static void test(String str) {
12. int check = 4;
13. if (check = str.length()) {
14. System.out.print(str.charAt(check -= 1) +", ");
15. } else {
16. System.out.print(str.charAt(0) + ", ");
17. }
18. }
and the invocation:
21. test("four");
22. test("tee");
23. test("to");
结果是什么?
A. r, t, t,
B. r, e, o,
C. Compilation fails.
D. An exception is thrown at runtime.
Answer: C
你能解释为什么编译失败了吗?
答案 0 :(得分:2)
if (check = str.length())
上述if
中的表达式是一个等同于: -
if (str.length())
因此,表达式被计算为integer
值。
这是一个编译错误。由于if
语句中的表达式应评估为boolean
中的Java
值。
因此,if
语句应写为: -
if (check == str.length())
为了成功编译。
答案 1 :(得分:1)
编译错误是因为check = str.length()
内的if
语句,即if (check = str.length())
。 其分配而不是比较。 If
声明预计最终评估为boolean
。
正确的陈述如下,比较==
运算符:
if (check == str.length())
答案 2 :(得分:1)
第13行应如下
if (check == str.length()) {