Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对数组中的所有奇数索引求和_Java_Arrays - Fatal编程技术网

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对此,我认为更新应该包含一个有效的解决方案。