Java 为什么此代码的编译会失败?
另一个SCJP问题。我认为输出是K=7,但这本书的答案是“编译失败”。我只是觉得代码没有任何问题Java 为什么此代码的编译会失败?,java,Java,另一个SCJP问题。我认为输出是K=7,但这本书的答案是“编译失败”。我只是觉得代码没有任何问题 1. class RevQOne{ 2. public static void main(String [] args) { 3. boolean i = true; 4. boolean j = false; 5. short k = 10; 6. if((k == 10) && (j = true))k--; 7. if((i = fals
1. class RevQOne{
2. public static void main(String [] args) {
3. boolean i = true;
4. boolean j = false;
5. short k = 10;
6. if((k == 10) && (j = true))k--;
7. if((i = false) || ( k == 9))
8. k--;
9. k--;
10. System.out.println("k=" + k);
11. }
12. }
PS:第6行和第7行中的傻=符号以及第7行中缺少大括号的if都是故意的。我想,这个问题是为了测试我对这些东西在被滥用时的行为的了解。你完全正确。它确实可以编译(前面的答案是错误的),尽管赋值很粗略,这就是输出。是的,在我看来很好。它在一个正确命名的文件中吗?好的,编译它。输出确实是k=7。安妮塔:1,书:0。谢谢大家 你试过自己编译吗?(提示,看看比较“j”和“true”的布尔逻辑)Asker没有比较它们,j被赋值为true,这将返回true所有这些边上的数字(
1.
,2.
,等等)将完全混淆编译器!:-)它不需要有特定的名称,因为类不是公共的。赋值为值对于任何类型都是合法的。您只需要将的整体条件设置为布尔值@dan,您是对的。我想说的是,您只能使用布尔赋值直接作为条件的值,例如,if(a=true)
,但我的措辞很糟糕,代码实际上并没有这样做。这些SCJP书籍给出错误答案的情况并不少见。如果有最新的勘误表,一定要在书的网站上查阅。这(以及其他错误)可能已经被确认。