繁体   English   中英

无法将字符串转换为 int,无法获取 java 中数组元素的长度

[英]Not able to convert string to int, not able to get length of array element in java

我有一个字符串金额,其值为496988,(11874),952743,(35175),33425,(654)

我正在拆分它,以便我可以在String[] casesDataArr中获取单个元素

String[] casesDataArr = textView.getText().toString().split(" ");

现在我只需要数组中的整数并删除( , )

我试过这个

active = Integer.parseInt(casesDataArr[0]);
delActive = Integer.parseInt(casesDataArr[1].substring(1, casesDataArr.length));

discharged = Integer.parseInt(casesDataArr[2]);
delDischarged = Integer.parseInt(casesDataArr[3].substring(1, casesDataArr.length));

death = Integer.parseInt(casesDataArr[4]);
delDeath = Integer.parseInt(casesDataArr[5].substring(1, casesDataArr.length));

但在最后一行出现错误:

java.lang.StringIndexOutOfBoundsException:长度=5; 索引=6

我知道这是由于casesDataArr.length但当我写casesDataArr[5].length它显示冗余文本。 我缺少一些指导我的东西。 有什么疑问可以在下方评论。

3个问题:

  • 您正在使用数组的长度而不是每个字符串的长度。 应该导致你这样做的是你对每个索引使用相同的长度,这不是很奇怪吗?)

  • String 的最后一个字符的索引不是string.length()而是string.length() -1因为索引从 0 开始。

  • 您不使用casesDataArr[1]而是使用casesDataArr[0]两次

    active = Integer.parseInt(casesDataArr[0]); delActive = Integer.parseInt(casesDataArr[1].substring(1, casesDataArr[1].length()-1)); discharged = Integer.parseInt(casesDataArr[2]); delDischarged = Integer.parseInt(casesDataArr[3].substring(1, casesDataArr[3].length()-1)); death = Integer.parseInt(casesDataArr[4]); delDeath = Integer.parseInt(casesDataArr[5].substring(1, casesDataArr[5].length()-1));

使用正则表达式,您可以删除非数字字符:

String input = "496988,(11874),952743,(35175),33425,(654)";

List<Integer> values = new ArrayList<>();
for (String s : input.split(",")) {
    values.add(Integer.parseInt(s.replaceAll("\\D", "")));
}

System.out.println("values: " + values);

结果:

值:[496988、11874、952743、35175、33425、654]

给定:值字符串: 496988,(11874),952743,(35175),33425,(654)

首先删除“ ”:

String casesDataArr[]=textView.getText().toString().split(",");

您的数组现在如下所示:

索引 0: 496988

索引 1: (11874)

索引 2: 952743

索引 3: (35175)

指数 4: 33425

索引 5: (654)

其次,删除“ () ”(如果存在):

for(int i=0;i<casesDataArr.length;i++){

if(casesDataArr[i].contains("(")&&casesDataArr[i].contains(")")){
casesDataArr[i]=casesDataArr[i].substring(casesDataArr[i].indexOf("(")+1,casesDataArr[i].indexOf(")"));
}

}

得到的数组为:

索引 0: 496988

索引 1: 11874

索引 2: 952743

指数 3: 35175

指数 4: 33425

指数 5: 654

要从数组的索引中获取int类型的数字,只需这样写:

int myInteger=Integer.parseInt(casesDataArr[0]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM