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

请教我方法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 +"位的数!");

  }    

}    


正在回答

2 回答

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

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

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

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

锤子版黑锅牌 提问者

输出之前已经++了,还是少1,所以我才在for循环之前加一个判断,以此加1后进入for循环再进行自加。相当于在for循环里,count的初值已经是1了,而不是0.
2019-02-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请教我方法2的改进

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