NumberFormatException:无效的 BigInteger

NumberFormatException: Invalid BigInteger

这是我的部分代码:

public class Result extends Fragment{

     BigInteger sumCipher = BigInteger.ZERO;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.result, container, false);
         return rootView;
     }

     @Override
     public void onStart() {
         super.onStart();

         new AsyncGetSumCipher().execute();
     }        

     public void setSumCipher(BigInteger sum){
         this.sumCipher = sum;
     }

     public BigInteger getSumCipher(){
         return sumCipher;
     }
}

AsyncGetSumCipherclass显然包含doInBackground和onPostExecute。后者如下:

protected void onPostExecute(StringBuilder result) {
 super.onPostExecute(result);

     BigInteger bi = new BigInteger(result.toString());

     setSumCipher(bi);
}

Here is the error

有人可以帮助我吗?我已经坚持了几个星期了:(

我猜你的 result.toString() returns 无效 bigInt。请登录并查看值是多少。

这取自 oracle 文档:

大整数 构造函数:public BigInteger(String val)

将 BigInteger 的十进制字符串表示形式转换为 BigInteger。字符串表示形式包含一个可选的减号,后跟一个或多个十进制数字序列。字符到数字的映射由 Character.digit 提供。 字符串不能包含任何无关字符(例如空格)。

参数: val - BigInteger 的十进制字符串表示形式。

投掷: NumberFormatException - val 不是 BigInteger 的有效表示。

另请参阅:

Character.digit(char, int)

https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)

问题已通过执行以下操作解决:

BigInteger bi = new BigInteger(result.toString().trim().replaceAll("\"",""));