数字格式异常整数类java

时间:2014-02-07 08:41:52

标签: java logic syntax-error

这里的简单问题是代码:

public class BlankClass
{

    public static void main(String []args)
    {
        String string1 = new String("ABCD1234");
        int i = Integer.parseInt(string1);
        System.out.println(i);
    }
}

这是错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "ABCD1234"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at HelloWorld.main(HelloWorld.java:7)

ABCD1234基数10应等于2,882,343,476,小于2 ^ 32 4,294,967,296:\

但在这种情况下:

public class BlankClass
{
    public static void main(String []args)
    {
        System.out.println(2882343476);
        System.out.println(Math.pow(2, 32));
    }
}

以下是错误:

BlankClass.java:6: error: integer number too large: 2882343476
    System.out.println(2882343476);
                       ^
1 error

2 个答案:

答案 0 :(得分:2)

这是因为“ABCD1234”大于Integer.MAX_VALUE,并且您也没有以十六进制方式解析它。 以下代码有效:

String string1 = new String("ABCD1234");
System.out.println(Long.parseLong(string1, 16));

答案 1 :(得分:0)

如果要解析十六进制数字,则需要指定基数:

String string1 = new String("ABCD");
int i = Integer.parseInt(string1, 16);

但无论如何你需要使用长篇:

2882343476 0xABCD1234
2147483647 Integer.MAX

这就是你的代码:

String string1 = new String("ABCD1234");
long i = Long.parseLong(string1, 16);

请参阅Integer.MAX