这样不对吗

来源:4-15 编程练习

十字路口向左向右

2016-09-06 21:31

public class HelloWorld{
    public static void main(String[] args){
        int num = 999;
        int count = 0;
        if(num>=0&&num<=999999999){
            do{
                count++;
                num/=10;
            }while(num!=0);
        System.out.println("它是个"+count+"位的数");
        }else{
            System.out.println("输入有误");
        }
    }
}

写回答 关注

6回答

  • 渴望飞翔的猪
    2016-09-07 11:01:57
    已采纳

    上面回答的人都没做测试吧,我把程序运行了一遍没发现哪里有问题,运行结果也是3位。

    十字路口向左...

    知己啊

    2016-09-07 22:22:43

    共 1 条回复 >

  • 慕粉3615872
    2016-09-09 14:03:42

          这样表达也对, INT的无符号位存储范围在0~2^32-1,999999999在这个范围内

    ·


  • qzz
    2016-09-06 22:12:05

    do while 是先进行一次然后再判断

  • qzz
    2016-09-06 22:10:27

    你这样貌似是四位数

  • 慕粉3915589
    2016-09-06 22:09:59

    应该把中间循环部分改成

    while(num!=0){

    count++;

           num/=10;

      }


    十字路口向左...

    这只是一种方法 ,我的也没错啊,因为有if限制 这个数必定是一位数到六位数之间的,我先让count自加一次,因为这个数最少是一位数,然后num/10,如果是一位数那么得出的值就是0,不符合while条件,自然退出循环,如果是两位数到这步也变成一位数了,再走一遍do,到while也就退出了,count也没错啊

    2016-09-07 22:21:49

    共 1 条回复 >

  • 小毛豆
    2016-09-06 22:08:37

    999999999已经超过int 类型最大数值,数值溢出

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

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

1165550 学习 · 17586 问题

查看课程

相似问题