Java 方法来添加偶数/奇数

Java 方法来添加偶数/奇数,java,arrays,Java,Arrays,我有一个包含几个数字的数组: int[] tab = {1,2,3,4}; 我必须创建两种方法,第一种是sum方法,第二种是numberod方法 这一步没问题 int length = tab.length; length = numberOdd(tab,length); int sum_odd = sum(tab, length); System.out.println(" 1) - Calculate the sum of the odds numbers : => " + s

我有一个包含几个数字的数组:

int[] tab = {1,2,3,4};
我必须创建两种方法,第一种是sum方法,第二种是numberod方法

这一步没问题

int length = tab.length;
length = numberOdd(tab,length);

int sum_odd = sum(tab, length);

System.out.println(" 1) - Calculate the sum of the odds numbers :  => " + sum_odd);


public static int sum(int[] tab, int length){
      int total = 0;
      for(int i=0;i<length;i++){
        total += tab[i];
      }
      return total;
}


public static int numberOdd(int[] tab, int length){
      int n = 0;
      for(int i=0;i<length;i++){
        if(tab[i] % 2 != 0){
          tab[n++] = tab[i];
        }
      }
      return n; 
}
现在,我必须用NumberEvent方法将偶数相加,得到值0

我不明白为什么检索值=>0

这是我的密码:

int[] tab = {1,2,3,4};

int length = tab.length;
length = numberOdd(tab,length);

int sum_odd = sum(tab, length);

length = numberEven(tab,length);
int sum_even = sum(tab, length);



System.out.println(" 1) - Calculate the sum of the odds numbers :  => " + sum_odd);
System.out.println(" 2) - Calculate the sum of the evens numbers :  => " + sum_even);
}

public static int numberEven(int[] tab, int length){
      int n = 0;
      for(int i=0;i<length;i++){
        if(tab[i] % 2 == 0){
          tab[n++] = tab[i];
        }
      }
      return n; 
}
供参考:我在这里共享代码=>


谢谢您的帮助。

您已经更改了NumberId方法中的数组。
尝试替换tab[n++]=tab[i];使用n++

您已更改NumberId方法中的数组。 尝试替换tab[n++]=tab[i];使用n++

这应该行得通

这应该行得通

您需要将制表符[i]添加到n 将长度作为numberEven的参数不会造成任何伤害,但您不需要它。 以下是工作示例:

public class Main {
    public static void main(String[] args) {
        int[] tab = { 1, 2, 3, 4 };
        System.out.println(numberEven(tab));
    }

    public static int numberEven(int[] tab) {
        int n = 0;
        for (int i = 0; i < tab.length; i++) {
            if (tab[i] % 2 == 0) {
                n += tab[i];
            }
        }
        return n;
    }
}
您需要将制表符[i]添加到n 将长度作为numberEven的参数不会造成任何伤害,但您不需要它。 以下是工作示例:

public class Main {
    public static void main(String[] args) {
        int[] tab = { 1, 2, 3, 4 };
        System.out.println(numberEven(tab));
    }

    public static int numberEven(int[] tab) {
        int n = 0;
        for (int i = 0; i < tab.length; i++) {
            if (tab[i] % 2 == 0) {
                n += tab[i];
            }
        }
        return n;
    }
}

您在numberOdd中修改tab,因此您没有针对您认为是的数组运行numberEven。另外,为什么要修改长度,为什么还要将长度作为参数传递给您的方法?使用array.length获取数组的长度。不需要传递额外的参数。谢谢,我理解我的问题。你在numberOdd中变异tab,所以你没有针对你认为是的数组运行numberEven。还有,你为什么要修改长度,为什么还要将长度作为参数传递给你的方法?使用array.length获取数组的长度。无需再进行辩论。谢谢,我理解我的问题。非常感谢,我理解我的问题^^非常感谢,我理解我的问题^^
6