请教我方法2的改进

来源:4-15 编程练习

锤子版黑锅牌

2019-02-02 18:40

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 +"位的数!");

  }    

}    


写回答 关注

2回答

  • 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就可以了呀

    锤子版黑锅牌

    输出之前已经++了,还是少1,所以我才在for循环之前加一个判断,以此加1后进入for循环再进行自加。相当于在for循环里,count的初值已经是1了,而不是0.

    2019-02-02 23:38:43

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

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

1165172 学习 · 17581 问题

查看课程

相似问题