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

请教我方法2的改进

public class HelloWorld{

  public static void main(String[] args){

//    方式1:通过百度搜索到幂运算法加入的

       int num = 999;

       int count = 0;


       for (int i = 0; i <= 10; i++) {

    

       double result = Math.pow(10,i);

     

          if(num - result >= 0) {

      

            count = count +1; 

        

       }

}


//方式2:此法有个缺点:没在for之前把count+1,最终位数会少1    

/**       int num = 999;

       int count = 0;

       int dig = 1;

       

      if(num > -1000000000 && num < 1000000000){

                count = 1; 

            } 

       else {

           System.out.println("输入的值必须在10位以内");

       } 

    for (int i = 1; i < 10; i++) {


            dig = (dig * 10);

            

            if(num - dig >= 0) {

              count = count +1; 

         //  System.out.println(dig);    

            }

}

**/       

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

  }    

}    


提问者:锤子版黑锅牌 2019-02-02 18:40

个回答

  • lxy180110225
    2019-02-05 17:36:22
    已采纳

    是的,之前我看错了。方法二因为dig第一次循环值为10,所以第一次循环若>=,count结果应为2.所以把count=0改为count=num==0 ? 0 : 1;然后若超10位要求重输,剩下代码不变。这样应该行吧

  • lxy180110225
    2019-02-02 23:23:11

    方法二的结果count就是比位数少1,所以在输出之前进行count++,再输出count就可以了呀