我试着从标准输入中读取一些非常大的数字,然后把它们加在一起。
但是,要添加到BigInteger,我需要使用BigInteger.valueOf(long);
:
private BigInteger sum = BigInteger.valueOf(0);
private void sum(String newNumber) {
// BigInteger is immutable, reassign the variable:
sum = sum.add(BigInteger.valueOf(Long.parseLong(newNumber)));
}
这工作正常,但由于BigInteger.valueOf()
只需要一个long
,我不能添加大于long
(9223372036854775807)的数字。
每当我尝试添加9223372036854775808或更多时,我都会得到一个NumberFormatException(这是完全预期的)。
是否有类似BigInteger.parseBigInteger(String)
的东西?
6条答案
按热度按时间4ktjp1zp1#
使用构造函数
public BigInteger(String val)
将BigInteger的十进制字符串表示形式转换为BigInteger。
亚瓦多克
ohfgkhjo2#
根据documentation:
BigInteger(String瓦尔)
将BigInteger的十进制字符串表示形式转换为BigInteger。
这意味着您可以使用
String
来初始化BigInteger
对象,如以下代码片段所示:rsl1atfo3#
BigInteger有一个构造函数,你可以把字符串作为参数传递给它。
试试下面,
i7uq4tfw4#
不使用
valueOf(long)
和parse()
,您可以直接使用接受字符串参数的BigInteger构造函数:这应该会给予你想要的值。
ijnw1ujt5#
对于一个循环,你想把
strings
的array
转换成bigIntegers
的array
,这样做:bqf10yzr6#
如果你想将明文(不仅仅是数字)转换为BigInteger,你会遇到异常,如果你只是尝试:new BigInteger(“不是数字”)
在这种情况下,你可以这样做: