数字格式异常整数类java
真正简单的问题是代码:数字格式异常整数类java,java,logic,syntax-error,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 "ma
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中的2882343476,其小于2^32 4294967296:\ 但在这种情况下:
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
这是因为“ABCD1234”大于Integer.MAX_VALUE,而且您没有以十六进制的方式对其进行解析。
以下代码起作用:
String string1 = new String("ABCD1234");
System.out.println(Long.parseLong(string1, 16));
如果要分析十六进制数,需要指定基数:
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);
请参阅。您的问题是什么?“ABCD1234应等于2882343476”-以何种方式?是什么让你认为
Integer.parseInt
接受十六进制输入?文件上是这么说的吗?是什么让你认为int
在2^32之前是有效的?(提示:如何表示负数?)-1在询问之前,您应该阅读文档或搜索,int)