java BigInteger 操作

标签 java biginteger

以下代码用于调试:

public static void main(String[] args) {
    BigInteger n = new BigInteger("10000000001");
    String sn = n.toString();
    char[] array = sn.toCharArray();
    //intend to change value of some char in array
    //not standard math operation
    BigInteger result = new BigInteger(array.toString());
}

它给了我错误:

    Exception in thread "main" java.lang.NumberFormatException: For input string: "[C@86c347"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
        at java.math.BigInteger.<init>(BigInteger.java:316)
        at java.math.BigInteger.<init>(BigInteger.java:451)
        at debug.main(debug.java:14)

但它工作正常,直到这种情况,我不太确定出了什么问题。

最佳答案

如有疑问,请添加更多诊断...删除执行两件事的语句。这:

array.toString()

不会做你期望的事情,因为数组不会重写toString()。它将返回类似 "[C@89ffb18" 的内容。您可以通过提取额外的局部变量来看到这一点:

BigInteger n = new BigInteger("10000000001");
String sn = n.toString();
char[] array = sn.toCharArray();
String text = array.toString();
BigInteger result = new BigInteger(text);

然后在调试器中,您应该能够轻松地在调用 BigInteger 之前查看 text 的值 - 这将非常清楚地显示问题。

要将字符数组转换为包含这些字符的字符串,您需要:

new String(array)

关于java BigInteger 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15989906/

相关文章:

java - 表单布局样式

java - 确定程序的时间和空间复杂度

java - 需要有关构建接口(interface)的建议

java - 具有单选按钮的多项选择题在一种方法中不起作用

java - 程序变慢但计算的数字变小

java - 尝试创建一个构造函数,该构造函数将使用参数中给出的数字初始化 'number' 并设置长度

java - 获取 BigFraction 的整数部分,作为 BigInteger

java - 哪种 MySQL 数据类型将存储此 Java BigInteger?

java - 带有 RTC 的 Servlet

java - 如何使用位操作实现 Karatsuba 乘法