for(int i=1;i<10;i++){ if(num/(10^i)<=1){ count=i; System.out.println("它是个"+count+"位的数!"); } } 谁能教一下问题在哪,感激不尽
^ 是按位异或 不是幂指数的意思。比如二进制 1001 ^ 1100 = 0101
0^0=0,1^1=0 ,1^0 = 1,0^1=1。
问题很多,^是判断真假的,你应该是想用*;if(num/(10*i)<=1)里,用count=i会造成死循环;
所以for里条件不对得换,if的循环体里的加限制的条件语句
且“^”是异或符号吧
楼主,你可以用纸和笔进行手动演算一下,当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+"位的数!"); }
它输出后还会继续循环
你应该结束循环了