编译错误相关

时间:2012-11-29 16:58:41

标签: java static static-methods

假设:

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

你能解释为什么编译失败了吗?

3 个答案:

答案 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()) {