为了账号安全,请及时绑定邮箱和手机立即绑定

编程练习遇到的问题

for(int i=1;i<10;i++){    if(num/(10^i)<=1){        count=i;        System.out.println("它是个"+count+"位的数!");    } } 谁能教一下问题在哪,感激不尽

正在回答

6 回答

^ 是按位异或 不是幂指数的意思。比如二进制     1001 ^ 1100 = 0101
0^0=0,1^1=0 ,1^0 = 1,0^1=1。

0 回复 有任何疑惑可以回复我~
#1

慕粉3461685 提问者

非常感谢!
2016-06-06 回复 有任何疑惑可以回复我~

问题很多,^是判断真假的,你应该是想用*;if(num/(10*i)<=1)里,用count=i会造成死循环;

所以for里条件不对得换,if的循环体里的加限制的条件语句

1 回复 有任何疑惑可以回复我~
#1

爱爱慕

上面的有些失误,没注意。 你这样做的思路是对的,可是在这道题里不太好实现,这个题目里的都是int型,不管你用%,/t它的答案都是小于10的,也就是你的判断一直都会是1位的,你可以用强制类型转换试一下,并且你要在System后加break;
2016-06-05 回复 有任何疑惑可以回复我~
#2

慕粉3461685 提问者

非常感谢
2016-06-06 回复 有任何疑惑可以回复我~

且“^”是异或符号吧

0 回复 有任何疑惑可以回复我~

楼主,你可以用纸和笔进行手动演算一下,当i= 1和2是if条件不成立,但是i = 3到9,if条件都是成立的所以,count最终会赋值成9,结果就是错误的了,解决的办法是在count = i;之后加一条break;语句终止循环,输出的就是正确的值了

for (int i = 0; i < 10; i++) {
    if (num / (10 ^ i) <= i) {
        count = i;
        break;
    }
    System.out.println("它是个"+count+"位的数!");
}


1 回复 有任何疑惑可以回复我~
#1

慕粉3461685 提问者

非常感谢
2016-06-06 回复 有任何疑惑可以回复我~

它输出后还会继续循环

1 回复 有任何疑惑可以回复我~
#1

慕粉3461685 提问者

非常感谢
2016-06-06 回复 有任何疑惑可以回复我~

你应该结束循环了

1 回复 有任何疑惑可以回复我~
#1

慕粉3461685 提问者

非常感谢
2016-06-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165459    人
  • 解答问题       17585    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

编程练习遇到的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信