告诉我为什么(程序问题)

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:27:24
先看下小弟写的一个java程序
public class lesson2
{
public static void main(String args { int a;
try
{
String s="11111111111";
a=Integer.parseInt(s);
System.out.println(a);
}catch(NumberFormatException e){
System.out.println("格式错误");
}
}
}
当s长度为1-10的时候 都能正常运行输出a的值,一旦长度超过10,马上就出现异常 运行结果变为'格式错误'四个字。为什么会出现异常呀?请帮我解释下,必以积分作为重谢。

int型是32位,最大数字为2的21 4748 3648,所以超过10位之后就产生了溢出了~~~

也就是出现了异常了~

因为超过10位,已经超过了int型数据的范围了,所以对于程序来说,它就不知道这是int型了,就解析不了了.

因为10以后就超出了int型的长度。
int是4字节的,从-2,147,483,648到2,147,483,647.
楼主看看int型长度就知道了,你的数超出了int型的定长。

Integer是int的封装类
int的最大值是(2^31)-1=2147483647
大于这个数了便异常了啊

程序是没错的!因为数据超过Int的范围了
以下是从JDK文档复制出来的!你看看把

public static int parseInt(String s)
throws NumberFormatException将字符串参数作为有符号的十进制整数进行分析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。

参数:
s - 包含要分析的 int 表示形式的 String。
返回:
用十进制参数表示的整数值。
抛出:
NumberFormatException - 如果字符串不包含可分析的整数。