【发布时间】:2021-01-06 16:08:19
【问题描述】:
我想将二进制转换为整数,将其乘以 17,然后再将其转换回二进制。这是我的代码:
Scanner scan = new Scanner(System.in);
String n = scan.nextLine();
long j = Long.parseLong(n, 2);
j = j * 17;
System.out.println(Long.toBinaryString(j));
我最初将 j 设为 int,但在获得更大的测试用例后更改了它:
10001111110001000101000001000100111100110101100011000011011001111000100110110000110101110101100001001100010111000101000100010010011000000010010
它有一个 NumberFormatException,这是有道理的,因为 long 只能存储有限数量的数字,那么对于非常长的整数是否有任何数据类型?
【问题讨论】:
-
您是在问为什么会发生异常?或者如何解决这个数字大小的问题?
-
@user202729 哦,我知道为什么会发生异常,我会尽快编辑我的帖子。我需要有关数字大小的帮助。
-
无论如何请看stackoverflow.com/questions/17833463/…;但是,如果这是家庭作业,您应该自己实现它
-
如果问题是二进制数太大,使用BigInteger。 (您应该能够找到 javadocs 以了解如何操作。提示:使用 google ....)
-
是否必须将中间结果具体化为long?您可以考虑添加两个二进制字符串:(b + "0000") + ("0000" + b)。我花了几分钟才想出一个解决方案,我使用“long”方法只测试了较小的字符串。
标签: java long-integer numberformatexception