我想计算所有奇数数组索引的总和,但是我在找到正确的方法时遇到了一些麻烦。
到目前为止,这是我的代码:
String id = "9506265088085";
String[] strArray = id.split("");
int[] intArray = new int[strArray.length];
int sum = 0;
for (int i = 0; i < 6; i++) {
if (i%2!=0)
{
sum += Integer.parseInt(String.valueOf(id.charAt(i)));
}}
System.out.println(sum);
关于为什么这不起作用的任何想法,或更简单的方法吗?为了澄清我想在奇数组索引位置添加所有数字,所以intArray[1] + intArray[3] + intArray[5] + ...
。
修改 忘了提我只想添加1,3,5,7,9,11而不是13。
答案 0 :(得分:7)
您只能从i=0 to i=5
答案 1 :(得分:5)
另一个答案是对的,你只是循环到5.然而,你使这个过于复杂;您可以使用一个巧妙的技巧来避免Integer.parseInt()
和String.valueOf()
:
int sum = 0;
for (int i = 1; i < id.length(); i += 2) {
sum += (id.charAt(i) - '0');
}
另请注意,您不必反复检查i%2
,而是可以在每次迭代结束时将2
添加到循环控制变量中(让它从1
开始,这样您就可以只有奇数指数)。
答案 2 :(得分:3)
刚编辑了您的代码:
String id = "9506265088085";
int[] intArray = new int[id.length()];
int sum = 0;
for (int i = 0; i < intArray.length; i++) {
if (i%2!=0)
{
sum += Integer.parseInt(String.valueOf(id.charAt(i));
}}
System.out.println(sum);
答案 3 :(得分:2)
String id = "9506265088085";
int[] intArray = new int[strArray.length];
int sum = 0;
for (int i = 1; i < id.length(); i+=2) {
sum += Integer.parseInt(String.valueOf(id.charAt(i)));
}
System.out.println(sum);
答案 4 :(得分:0)
此数组中没有索引13,因为Java索引从0开始。使用Java 8计算所有奇数数组索引之和的解决方案是:
String id = "9506265088085";
String[] strArray = id.split("");
int sum = IntStream.range(0, strArray.length)
.filter(idx -> idx % 2 == 1)
.map(idx -> Integer.parseInt(strArray[idx]))
.sum();
System.out.println(sum);