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

完全理解不了,求解释,代码是抄答案的,是不是太笨了o(╥﹏╥)o

public class HelloWorld{

public static void main(String[] args){

int num = 9999;

int count = 0;

if(num>=0&&num<=999999999){

    while(num!=0){

        count++;

        num/=10;

    }

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

}else{

    System.out.println("输入有误!");

}

}

}


正在回答

8 回答

int num = 9999;

int count = 0;

if(num>=0&&num<=999999999){

    while(num!=0){

        count++;

        num/=10;

    }

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

}else{

    System.out.println("输入有误!");

}

while第一次判断条件成立,执行:count 变成1了  num变成999.9了    

while第二次判断条件成立,执行:count变成 2了  num变成99.9了

while第三次判断条件成立,执行:count变成3了 num变成 9.9了

while第四次判断条件成立,执行:count变成4了 num变成 0.9,因为是int变量类型(整数),所以num变成了0

while第五次判断条件不成立,结束while循环,进入System

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

while第一次判断条件成立,执行:count 变成1了  num变成10了    
while第二次判断条件成立,执行:count变成 2了  num变成1了
while第三次判断条件成立,执行:count变成3了 num变成 0.1,因为是int变量类型,所以num变成了0
while第四次判断条件不成立,结束while循环,进入System

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

weixin_慕函数9095607

如果int num=9999; while第一次判断条件成立,执行:count 变成1了 num变成999.9了 while第二次判断条件成立,执行:count变成 2了 num变成99.9了 while第三次判断条件成立,执行:count变成3了 num变成 9.9了 while第四次判断条件成立,执行:count变成4了 num变成 0.9,因为是int变量类型(整数),所以num变成了0 while第五次判断条件不成立,结束while循环,进入System
2021-03-30 回复 有任何疑惑可以回复我~

说错了,跟int没有关系,在Java中,/出来的都是整数,且并不会四舍五入。

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

因为是/10,最后剩一个数的时候除出来是小数,因为num是int型的,会默认为0,计数器额外+1

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

public class HelloWorld{
    public static void main(String[] args){
        int num = 999;
        int count = 0;

        if(num > 0 && num < 0x7FFFFFFF) {
            while(num / 10 != 0) {
                count++;
                num /= 10;
            }
            System.out.println("他是个" + (count + 1) + "位的数!");
        } else {
            System.out.println("输入有误");
        }
    }
}

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

慕姐1003813

count为什么是以自加的方式进行判断num的位数呢,如果num循环到11,那count是1,循环到12,count不就是2了么
2020-11-04 回复 有任何疑惑可以回复我~
#2

qq_慕数据1267178 回复 慕姐1003813

12/10得出num是1,1/10的0.1,但num是int型,小数部分会丢弃,循环条件不成立,结束循环
2020-11-05 回复 有任何疑惑可以回复我~

public class HelloWorld{

public static void main(String[] args){

long num = 1111111111;

int count = 1;

while( num / 10 != 0 ){

        count +=1;

        num /= 10; 

    }

if(count>=10){

   System.out.println("重新输"); 

}else

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

 }

}


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

public class HelloWorld{

    public static void main(String[] args){

        int num = 999;

        int count = 0;

        while(num > 0){

            num /= 10;

            count++;

            if(num == 0)

            {

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

            }

        }

    }

}


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

慕沐2344328

为什么不可以是 while(num<1) 求解啊
2020-11-08 回复 有任何疑惑可以回复我~
#2

慕桂英5256766 回复 慕沐2344328

额 因为num=999
2020-12-06 回复 有任何疑惑可以回复我~
#3

慕容3257468

老师,int不是只能取整数吗,这里为什么不是 float num=999
2021-01-23 回复 有任何疑惑可以回复我~

就是给一个数值,让它极大,然后呢,取出循环中通用的数值.

 int值除以一个数值,会产生一个 大于整数的值。

    比如:2位数是在 10-99 就是说999 / 99, 还是0;

就是/999,若为0,它就是这个count位数,

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

慕勒9944832 提问者

count++; num/=10; 这个怎么理解。。o(╥﹏╥)o
2020-10-28 回复 有任何疑惑可以回复我~
#2

慕工程4430411 回复 慕勒9944832 提问者

就是说呢,999/10 最多得到 99,就是少了一位数,直到为0,就是位数的个数
2020-10-28 回复 有任何疑惑可以回复我~
#3

慕工程4430411 回复 慕勒9944832 提问者

可以看看我下面写的代码,好理解点, 要理解,int值除以一个数值,会产生一个 大于整数的值。/ 10 就是将位数去掉最高的那一位
2020-10-28 回复 有任何疑惑可以回复我~
#4

慕勒9944832 提问者 回复 慕工程4430411

大佬,这个是什么意思count++;
2020-10-28 回复 有任何疑惑可以回复我~
#5

慕勒9944832 提问者 回复 慕工程4430411

我在回头看看循环先吧,现在很懵
2020-10-28 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

完全理解不了,求解释,代码是抄答案的,是不是太笨了o(╥﹏╥)o

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