从String Java中提取Int时出错

时间:2015-09-03 02:51:41

标签: java android arrays string replaceall

我一直在logcat中遇到“无效的int”错误,我该怎么纠正呢?

check.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           digits.replaceAll("[^0-9]","");
           String[] guessArray = digits.split("");
           int[] guessInt = new int[6];
           for(i=0;i<5;i++){
               guessInt[i] = Integer.parseInt(guessArray[i]);
               if(guessInt[i] == actualInt[i]){
                   correct++;
               }
               else{
                   easyGuessDisplay.setText("Sorry! Try again!");
                   break;
               }
           }
       }
   });

在这种情况下digits是一个字符串,我将其拆分为一个数组,然后将每个索引的值与先前存储的数组进行比较。我遇到了崩溃,logcat对我大吼:

java.lang.NumberFormatException: Invalid int: ""
            at java.lang.Integer.invalidInt(Integer.java:138)
            at java.lang.Integer.parseInt(Integer.java:358)
            at java.lang.Integer.parseInt(Integer.java:334)

我想从digits中提取所有整数,并将它们存储在一个新数组中进行比较。

2 个答案:

答案 0 :(得分:1)

字符串是不可变的,因此不会进行修改。

你需要

digits = digits.replaceAll("[^0-9]","");

此外,split("")将在Java 8之前返回前导字符串。您也需要考虑这一点。

可能,

guessInt[i] = Integer.parseInt(guessArray[i + 1]);

答案 1 :(得分:0)

Codebender是正确的。除此之外,放置Integer.parseInt(guessArray [i]);在trycatch块内部捕获任何无效的数字异常并处理它。