以下代码用于调试:
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)但它工作得很好,直到这个案例,我不太确定哪里出了问题。
发布于 2013-04-14 00:14:35
如果有疑问,请添加更多诊断信息...去掉做两件事的语句。这一点:
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的值-这将非常清楚地显示问题。
要将char数组转换为包含这些字符的字符串,您需要:
new String(array)https://stackoverflow.com/questions/15989906
复制相似问题