NumberFormatException:无效的BigInteger

时间:2017-12-27 20:29:41

标签: android biginteger numberformatexception

以下是我的代码的一部分:

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;
     }
}

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

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

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

     setSumCipher(bi);
}

Here is the error

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

2 个答案:

答案 0 :(得分:0)

我猜你的result.toString()会返回无效的bigInt。请记录下来,看看价值是多少。

这取自oracle文档:

<强>的BigInteger 构造函数: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)

答案 1 :(得分:0)

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

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