这个循环为什么只能测试10位数之间的,而11位数却不能测试出来

来源:4-15 编程练习

折_柳

2017-08-11 09:55

int num = 999;

int count = 0;

do

{

   count++;

   num=num/10; 

}

while(num >0);


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


写回答 关注

3回答

  • 我也很绝望_但只能继续学啊
    2017-08-11 11:05:57

    首先jdk中定义int占4个字节,也就是32位,

    32位可以理解为jvm只给分配32个格子的空间,用以存放数据。

    但是Java中int有正负之分。所以32个格子中占用一个格子标识正负。

    所以只能用31个格子来标识数值。

    所以int能标识的最大/最小数字是:2的31次方:+/- 2147483648(刚好十位数),

    如果要测试到11位,建议把   int类型改成long int 就行了

    我也很绝望_... 回复折_柳

    不用客气,麻烦采纳一下,O(∩_∩)O谢谢

    2017-08-16 17:20:47

    共 2 条回复 >

  • 张冠森
    2017-08-11 10:27:54

    Java代码中直接书写的数字是int类型的,就是说数字的范围在 -2^31 到 2^31 - 1 这个范围之中.

  • LChloe
    2017-08-11 10:01:19

    应该是超出int型范围了

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

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

1165172 学习 · 17581 问题

查看课程

相似问题