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

麻烦各位大神帮忙解答一下~一直在输出他是个3位数。我自己的理解已经备注了。求指点~

public class HelloWorld{

public static void main(String[] args){

double num = 999.999;

int count = 0;

        for(;num>0&&num<=999999999;num/=10){

            if(num>=1){       //例如999如果999除以10大于1那么此时还没完成位数计算。

              count++;//所以位数+1并且进入for循环。

            }else{

                System.out.println("他是个"+count+"位的数!"); //进入3次循环后9.99除以10 小于零。此时循环结束输出

           

            }

        }

}

}


正在回答

3 回答

你的输出语句是在for循环里面的,只要条件满足for循环的条件,里面的if会一直进行判断,if不执行就会执行 else,所以一直输出,你可以把else去掉,里面的输出语句放在for循环的外面,输出就是对的了,你这样写看着比较复杂,初学者用while 写就可以了

https://img1.sycdn.imooc.com//5c87ce9a00018b3b05130284.jpg

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

逝颜丶 提问者

谢谢你的回复~这个逻辑我看懂了~那如果变量double变成了int,whlie(num>1)变成while(num!=0),当num/10在大于0小于1的范围内他是默认num=0!这是就不会执行下一个while循环是这个意思吗?
2019-03-13 回复 有任何疑惑可以回复我~
#2

weixin_慕侠7581233 回复 逝颜丶 提问者

double改成int,while的条件改成num!=0就可以了
2019-03-13 回复 有任何疑惑可以回复我~
#3

逝颜丶 提问者 回复 weixin_慕侠7581233

嗯~例题是这样的。我就是想问一下。如果double变成int,当num/0=0.99的时候他会默认num=0是这个意思吧~于是就不会执行while(num!=0)这个循环了
2019-03-13 回复 有任何疑惑可以回复我~
#4

weixin_慕侠7581233 回复 逝颜丶 提问者

int类型没有0.99哦,9/10除不掉,就是商为0余9
2019-03-13 回复 有任何疑惑可以回复我~
查看1条回复

还有没有比这个方法更好的~

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

小生不材

你把最后的结论输出拿出来 你的判断是只要大于0就会继续循环 所以一直输出 三次循环后已经得出结论了但是还会进入循环直接你的不大于0为止
2019-03-13 回复 有任何疑惑可以回复我~

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

后面加个break;就可以正常输出了?

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

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165842    人
  • 解答问题       17588    个

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

进入课程

麻烦各位大神帮忙解答一下~一直在输出他是个3位数。我自己的理解已经备注了。求指点~

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