java - 从 Java 字符串中提取 Int 时出错

标签 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 中提取所有整数并将它们存储在一个新数组中进行比较。

最佳答案

字符串是不可变的,因此不会就地修改。

你需要

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

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

可能会,

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

关于java - 从 Java 字符串中提取 Int 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366196/

相关文章:

java - Java OpenCV无法从MatOfInt4复制到MatOfInt4

java - AsyncTask 测试连接

java - 将字符串中的 subString 替换为 Hibernate 选择查询

android - 删除标签栏中的底线边框? (并更改所选颜色)

java - JSON Java 将空数组添加到 JSON 对象

java - 如何从 bean 类型数组列表中获取元素的索引

c - 如何找到具有特定值的行或列的总和?

java - 如何从短信收件箱/已发送短信中获取所有者手机号码

java - 重新启动应用程序后保存的图像消失

java - GridView 项目剪裁和不同的高度