A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 让寒风吹吧 初级黑马   /  2015-6-2 20:51  /  442 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是哪里错了?求解!

QQ截图20150602204831.png (45.43 KB, 下载次数: 3)

QQ截图20150602204831.png

10 个回复

正序浏览
wuyusi 来自手机 中级黑马 2015-6-3 08:21:50
10#
学习了,感谢分享
回复 使用道具 举报
ZYZQ 中级黑马 2015-6-3 00:57:05
9#
少年闰土 发表于 2015-6-2 21:33
这涉及到运算符的优先级,在76行
if(x & 7 == 0)
这行程序中,由于运算符==的优先级要高于运算符&,所以 ...

令人信服
回复 使用道具 举报
山崩地裂 发表于 2015-6-2 22:59
看错了,把&看成%
要看运算符的优先级

学习了,谢谢。。。
回复 使用道具 举报
海角秋风 发表于 2015-6-2 21:23
我运行了一下你这个,发现确实有错误。

看错了,把&看成%
要看运算符的优先级

捕获.PNG (117.83 KB, 下载次数: 9)

捕获.PNG
回复 使用道具 举报
if((x&7)==0)
回复 使用道具 举报
if((x&7)==0)
回复 使用道具 举报
这涉及到运算符的优先级,在76行
if(x & 7 == 0)
这行程序中,由于运算符==的优先级要高于运算符&,所以首先会做 7==0 运算,运算结果是boolean值false,然后等效成
if (x&false)而位运算符&不能对boolean做运算,所以会编译出错。
其实,原程序可以等效成
if(x & (7 ==0 ))

回复 使用道具 举报
我运行了一下你这个,发现确实有错误。


把运算单独取出来的运行的话,


输出的结果就是




所以个人理解是:
x&7是运算过程,它没有赋值给任何量,不能直接参与判断。

回复 使用道具 举报
  1. class Test{
  2.         public static void main(String[] args){
  3.                 int count =  0;
  4.                 for(int i = 0; i <= 100; i++){
  5.                         if(i%7 == 0){
  6.                                 count++;
  7.                         }
  8.                 }
  9.                 System.out.println(count);
  10.         }
  11. }
复制代码

这样写没错

点评

谢谢!  发表于 2015-6-2 22:42
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马