Java 对数组中的所有奇数索引求和
我必须按照以下说明完成一个程序:Java 对数组中的所有奇数索引求和,java,arrays,Java,Arrays,我必须按照以下说明完成一个程序: public class SumOddIndex { public static void main(String[] args){ int[] array = {1,1,8,4,2,6}; // Call the method sum, receive an integer value, and print the value on output. // A call passing the example
public class SumOddIndex {
public static void main(String[] args){
int[] array = {1,1,8,4,2,6};
// Call the method sum, receive an integer value, and print the value on output.
// A call passing the example array should result in a value of 11.
// Use a while loop.
}
这里编码一个名为sum的方法。sum方法应该以int-array作为参数,并返回具有奇数索引号的所有数组单元格中所有值的总和。
使用WHILE-LOOP!
}
这是我迄今为止尝试过的,但它不起作用
public static void main(String[] args) {
int[] array = {1, 1, 8, 4, 2, 6};
sum(array);
}
public static int sum(int[] y){
int sum = 0;
int i = 0;
while(y.len
public static int sum(int[] y) {
int sum = 0;
int i = 0;
while (y.length%2 == 1) {
//y.length%2 == 1;
sum += y[i];
i++;
}
System.out.println(y[i]);
return i;
}
}
假设您正在使用java,请尝试以下方法:
int i = 0;
int sum = 0;
while(i < myArray.length){
sum += myArray[i];
i++;
}
while(i < myArray.length){
if(i % 2 == 1){ // If index is odd
sum += myArray[i];
}
i++;
}
假设您正在使用java,请尝试以下方法:
int i = 0;
int sum = 0;
while(i < myArray.length){
sum += myArray[i];
i++;
}
while(i < myArray.length){
if(i % 2 == 1){ // If index is odd
sum += myArray[i];
}
i++;
}
我知道这个问题已经得到了回答,但我认为它仍然会有帮助
int i = 1;
int sum = 0;
while(i < myArray.length)
{
sum += myArray[i];
i += 2;
}
return sum;
inti=1;
整数和=0;
while(i
我添加了@Logan Murphy的优化建议。我知道这个问题已经得到了回答,但我认为它仍然会有帮助
int i = 1;
int sum = 0;
while(i < myArray.length)
{
sum += myArray[i];
i += 2;
}
return sum;
inti=1;
整数和=0;
while(i
我添加了@Logan Murphy的优化建议。使用Java 8中的流,您可以使用
IntStream
和filter
和将减少到一个总和:
int[] array = {1,1,8,4,2,6};
int sum = IntStream.range(0, array.length).filter(i -> i % 2 == 1).map(i -> array[i]).sum();
使用Java 8中的流,您可以使用IntStream
和filter
和reduce
将其减少到一个总和:
int[] array = {1,1,8,4,2,6};
int sum = IntStream.range(0, array.length).filter(i -> i % 2 == 1).map(i -> array[i]).sum();
使用流的过滤器并减少操作
int[]数组={1,1,8,4,2,6};
int sum=array.stream().filter(s->s%2!=0)。reduce(0,Integer::sum) 使用流的过滤器并减少操作
int[]数组={1,1,8,4,2,6};
int sum=array.stream().filter(s->s%2!=0)。reduce(0,Integer::sum) y.length%2
-告诉我这是什么。我想我可以计算数组中的所有奇数元素,但我认为我错了:(y.length%2
-告诉我这是什么。我想我可以计算数组中的所有奇数元素,但我认为我错了:(嗯,不,它不起作用,所以我需要一个while循环,它对13和5的元素求和。结果是11,这绝对不是最佳解决方案……相反,从1开始,然后递增2将是ideal@Saboteur您确定要将总和相加,而不仅仅是将总和设置为等于该值吗?不,我不确定:/i尝试求解t他现在的一个2小时:/public static int sum是我创建的。我不知道它是否正确……这是因为我在这里;)你有sum=myArray[i]
或sum+=myArray[i]
在您的代码中?嗯,不,它不起作用,所以我需要一个while循环,它将1 3和5的元素相加。因此结果是11这肯定不是最佳解决方案…相反,从1开始,然后递增2将是ideal@Saboteur您确定要添加到总和中,而不仅仅是将总和设置为等于该值吗?不,我不确定:/i我现在花了两个小时来解决这个问题:/public static int sum是我创建的。我不知道它是否正确……这是因为我在这里;)你有sum=myArray[i]
或sum+=myArray[i]
在你的代码中?这是可行的,但如果你从1开始,每次递增2,为什么要检查它是否奇怪?除非出现严重错误,i
现在总是奇怪。呜呜,我忘了把它去掉。这是可行的,但是如果你从1开始,每次递增2,为什么要检查它是否奇怪?除非有什么事情发生非常错误,i
现在总是很奇怪。呜呜,我忘了把它去掉。这是旧的,但不正确。过滤器只是把索引加起来,而不是值。@awm感谢您指出这一点,我相信更新应该包含一个有效的解决方案。这是旧的,但不正确。过滤器只是把索引加起来,而不是值。@awm感谢poi对此,我认为更新应该包含一个有效的解决方案。