问答详情
源自:4-15 编程练习

为毛他打印出来是这个鬼样子?

public class HelloWorld{
public static void main(String[] args){
int num = 999;
int count = 0;

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


它是个3位的数!
它是个9位的数!



不应该是 他是个0位数!他是个3位数!4,5,6,7,8,9么?



提问者:qq_尚晨_03700611 2016-12-28 13:47

个回答

  • 木牙虎
    2016-12-28 14:31:44

    楼主用的算法有问题,没看明白。为什么用for循环,i<10中这个10从哪儿来的?不如用do...while来得快,不管num是几位数,先除以10,次数加1,然后判断商是否大于1,如果大于1继续除以10,直到num变成个位数。此时count就是原来数的位数。

    int count=0  ;//保存位数,初始值0

    do {num=num/10;

        count++;    

    }while(num>1);

    System.out.println("它是个"+count+"位的数!");