【问题标题】:Error From Extracting Int from String Java从 String Java 中提取 Int 时出错
【发布时间】:2023-04-04 17:08:01
【问题描述】:

我在 logcat 中不断收到“invalid 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 中提取所有整数并将它们存储在一个新数组中以进行比较。

【问题讨论】:

  • 请不要使用图片来显示您的错误。
  • 那么我还能如何显示我的 logcat 评论?
  • @gamerguy0102 您的 replaceAll 方法没有返回格式正确的字符串以解析为整数。
  • @gamerguy0102,您应该将文本复制并粘贴到问题中。如果这不起作用,您应该强烈考虑重新输入它。它使每个人都可以更轻松地查看/阅读,并帮助索引和搜索问题中的文本。谢谢!
  • 为未来进行了编辑。谢谢!

标签: java android arrays string replaceall


【解决方案1】:

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

你需要

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

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

可能会,

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

【讨论】:

  • 前导空格是什么东西把它扔掉了。使用i+1 索引很有帮助。谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多