【问题标题】:getting an error numberFormatException for invalid :int " here it prints the phonenumbers""得到一个错误 numberFormatException 无效:int“这里它打印电话号码”“
【发布时间】:2018-07-29 13:32:50
【问题描述】:

这里我使用了一个像checkedcontact1这样的StringBuilder,它存储了选定的电话号码。

StringBuilder checkedcontacts1 = new StringBuilder();
for (int i = 0; i < name1.size(); i++) // it displays selected contacts in strings

                    {
                        if (ma.mCheckStates.get(i) == true) {
                            checkedcontacts1.append((phno1.get(i).toString()));**//here we get the selected contacts in strings**

                            checkedcontacts1.append("\n");
                            System.out.println("checked contacts:" + "\t" + phno1.get(i).toString() + "\t" + "amount" + "\t" + result);

                        }


                    }

将字符串数组转换为整数数组

String[] arr=new String[100];
      List<Integer> list = new ArrayList<>();
                    //System.out.println("values"+checkedcontacts);
                arr=checkedcontacts1.toString().split("TABTABTABTABTABTAB");
                    Integer [] ldv = new Integer[arr.length];
                    for(int i = 0; i<arr.length;i++){
                        String numberAsString = arr[i];
                        ldv[i]=Integer.parseInt(numberAsString);//*here I am getting an exception as NumberFormatException*


                    }
                    for(int i : ldv) {
                        list.add(i);
                    }

得到类似的错误

** 致命例外:主要 流程:com.bodaty.deyaPay.deyaPay,PID:30346 java.lang.NumberFormatException:无效的int:“+91 72072 21721 +91 79 8105 5662 " 在 java.lang.Integer.invalidInt(Integer.java:138) 在 java.lang.Integer.parse(Integer.java:410)

【问题讨论】:

  • 堆栈跟踪还说了什么?您要转换的价值是多少?
  • 你试过调试你的代码吗? checkedcontacts1的内容是怎样的
  • 调试一下。 numberAsString 有哪个值? idownvotedbecau.se/nodebugging
  • 评论您的完整字符串。你分裂了
  • 或者,这就是您假设正在发生的事情。事实并非如此可以解释很多,你不同意吗?调试,检查值,或添加打印语句,或检查堆栈跟踪,你会找到你传递的确切字符串。

标签: java android arrays


【解决方案1】:

这是您尝试解析的内容:

"+91 72072 21721 +91 79 8105 5662 "

第一步,执行.split("\\+"); 在您的字符串上,它实际上会将其拆分为单独的数字。 接下来,删除您尝试解析的数字的所有空格,以便您最终解析

"917207221721""917981055662"

这会让你更接近,但你应该知道这些数字超过了 int 的最大值,所以你应该选择另一种数字类型。

long number = Long.parseLong(input);

应该足够了(input 是您单独的 String 变量)。

【讨论】:

  • 当我删除 .split("TABTABTAB") 并放置 .split(+) 时,它会显示错误 Dangling metacharacter at + 符号
  • 这是意料之中的,split 需要一个正则表达式作为参数,我会更新我的答案。
  • 您可能还希望将它们保留为字符串,顺便说一句。将数字解析为数值的唯一正当理由是,如果您想对它们执行数学运算。你想用电话号码来做这件事似乎很奇怪。
  • @LahariAreti 你能解决你的问题吗?
  • Tq 我终于得到了结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 2022-06-18
  • 2019-06-26
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多