0

鉴于:

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

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

4

3 回答 3

2
if (check = str.length())

上面的表达式if是一个赋值,相当于: -

if (str.length())

因此,表达式被评估为一个integer值。这是一个编译错误。由于if语句中的表达式应计算booleanJava.

因此,该if声明应写为:-

if (check == str.length())

才能成功编译。

于 2012-11-29T16:59:53.817 回答
1

编译错误是因为iecheck = str.length()里面的这个语句。它的分配而不是比较。声明期望最终评估为.ifif (check = str.length()) Ifboolean

使用比较运算符的正确语句如下==

           if (check == str.length())
于 2012-11-29T17:01:18.197 回答
1

第 13 行应如下所示

if (check == str.length()) {
于 2012-11-29T17:02:26.637 回答