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

请问这样为啥不行?

public class HelloWorld{

public static void main(String[] args){

int num = 999;

int count = 0;

for(i=10;num/i>=1;){

    count=count+1;

    i=i*10;

}if(num/i<1){

    break;

}

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

}

}


正在回答

3 回答

就算你吧逻辑改好了 但是int 类型范围是20亿到-20亿 你这种算法i和十位数比较的时候 最后一遍*10自身会溢出 也就是num不是原来的num了 不能这样和十位数直接比

0 回复 有任何疑惑可以回复我~
int num = 1;
int count = 0;
for(int i=10;i<=1000000000;i=i*10){
    count=count+1;
    if(((double)num/i)-1<0){
        break;
    }
}System.out.println("它是个"+count+"位的数");

搜索

复制

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

if再循环外了;i从10开始 ,num/i>1成立的话就说明是从两位数开始的 count+2或者i从1开始

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

weixin_慕仰1563560

他的要count=1开始的。
2022-03-05 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

请问这样为啥不行?

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