我试图运行此代码,但它发生错误。
System.out.println(Long.parseLong("9000000000000000", 16));
正如我们所知,长的最小数量是-9,223,372,036,854,775,808和0x9000000000000000-8,070,450,532,247,928,832为什么会发生错误?
Long.parseLong()
不会像算术那样溢出到负数-它不是解析位表示,而是整数的位数。
基数16中最大的long
是7FFFFFFFFFFFFFFF
;您的值比这个大。
用于小数比较:
Base 16 Decimal
7FFFFFFFFFFFFFFF 9,223,372,036,854,775,807
9000000000000000 10,376,293,541,461,622,784
引用Long#parseLong(String, int)
如果出现以下任何一种情况,将引发NumberFormatExcture类型的异常:
示例:
parseLong("0",10)返回0L
parseLong("473",10)返回473L
parseLong("42",10)返回42L
parseLong("-0",10)返回0L
parseLong("-FF",16)返回-255L
parseLong("1100110",2)返回102L
parseLong("99",8)抛出一个NumberFormatExc0019
parseLong("Hazelut",10)抛出一个NumberFormatExc0019
parseLong("Hazelut",36)返回1356099454469L
使用基数16解析的十进制值为10376293541461622784,大于Long。最大_值(9223372036854775807)违反以下条件:
由字符串表示的值不是类型long的值
因此抛出NumberFormatException
。
import java.math.BigInteger;
public class ParseLong {
public static void main(String[] args) {
System.out.println("Max Long value :" + Long.MAX_VALUE);
System.out.println("Min Long value :" + Long.MIN_VALUE);
System.out.println("Value without overflow " + new BigInteger("9000000000000000", 16));
System.out.println("Value by parseUnsigned " + Long.parseUnsignedLong("9000000000000000", 16));
System.out.println("Value by literal " + 0x9000000000000000L);
}
}
900000000000000基数16是正数,因为没有符号。由于long
是有符号的,所以它可以容纳的最大数字是0x7FFF\u FFFF\u FFFF\u FFFF。所以你的太棒了。
如果你想-8,070,450,532,247,928,832,使用parseUnsignedLong()
:
System.out.println(Long.parseUnsignedLong("9000000000000000", 16));
输出:
-8070450532247928832
现在接受最高0xFFFF\u FFFF\u FFFF\u FFFF的值。
我找不到任何问题。正在获取此错误。。。 异常线程"main"java.lang.NumberFormatExcture:对于输入字符串:"atjava.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)atjava.base/java.lang.Integer.parseInt(Int
最近我对我的游戏有一个问题,这个: 以及: 给出一个错误: 有什么想法吗? (很抱歉,如果答案很简单,我找不到解决方案。)
我正在研究背包问题,我是Java新手。我可以像这样手动添加数字: 但是,我无法允许用户输入数字 第一个数字应该是目标,然后是权重<因此,我尝试将用户输入作为字符串,并用空格将其拆分,然后将其转换为整数<接下来,我尝试用两种方法进行parseInt,但都没有成功 以下是代码: 以下是错误: 异常线程"main"java.lang.NumberFormatException:对于输入字符串:"18 7
我正在研究背包问题,我是Java新手。我可以像这样手动添加数字: 谢谢你的帮助。
问题内容: 当我尝试将Integer.parseInt()与单个字符一起使用时,出现此错误。 是什么给我的错误是这样的: 问题答案: 字母不是数字。您是要写数字5吗? 还是您要打印字符的ASCII或Unicode值?
此问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能对未来的读者有所帮助。 当我尝试将Integer.parseInt()与单个字符一起使用时,我会得到这个错误。 给我带来错误的是: