首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java BigInteger操作

java BigInteger操作
EN

Stack Overflow用户
提问于 2013-04-14 00:12:36
回答 1查看 1.7K关注 0票数 0

以下代码用于调试:

代码语言:javascript
复制
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());
}

它会给我一个错误:

代码语言:javascript
复制
    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)

但它工作得很好,直到这个案例,我不太确定哪里出了问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-14 00:14:35

如果有疑问,请添加更多诊断信息...去掉做两件事的语句。这一点:

代码语言:javascript
复制
array.toString()

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

代码语言:javascript
复制
BigInteger n = new BigInteger("10000000001");
String sn = n.toString();
char[] array = sn.toCharArray();
String text = array.toString();
BigInteger result = new BigInteger(text);

然后,在调试器中,您应该可以很容易地在调用BigInteger之前查看text的值-这将非常清楚地显示问题。

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

代码语言:javascript
复制
new String(array)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15989906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档