[英]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.