如何计算和列出数组中的奇数

时间:2017-10-17 01:58:30

标签: java arrays

PUT

忽略与evens相关的代码。当运行奇数阵列时,只列出一个奇数而不是第一个数组内的其他数字以及几个零。我尝试了很多东西,但只是简单地计算了所有奇数。

2 个答案:

答案 0 :(得分:3)

看一下这部分:

public static int[] getAllOdds(int[] array) // when 
{
    int[] yaArray = new int[countOdds(array)];
    int j = 0;
    for(int i = 0; i<array.length;i++)
        if(array[i]%2==1 && array[i]%2!=0)
            yaArray[j]=array[i];
            j++;
    return yaArray;
}

变量j仅增加一次,即循环结束后。 如果要在循环或条件分支中执行多个语句,请使用括号。

同样array[i]%2==1array[i]%2!=0的含义相同,因此可以消除其中一个。

public static int[] getAllOdds(int[] array) // when 
{
    int[] yaArray = new int[countOdds(array)];
    int j = 0;
    for(int i = 0; i<array.length;i++)
    {
        if(array[i]%2==1)
        {
            yaArray[j]=array[i];
            j++;
        }
    }
    return yaArray;
}

答案 1 :(得分:0)

使用List而不是Arrays。列表最好使用。

试试这个,

public static void main(String[] args) {
    System.out.println("Odds - " + Arrays.toString(getAllEvens(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })));
    System.out.println("Evens - " + Arrays.toString(getAllOdds(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })));
}

public static Object[] getAllOdds(int[] array) {
    List<Integer> list = new ArrayList<>();
    for (int no : array) {
        if (no % 2 != 0)
            list.add(no);
    }
    return list.toArray();
}

public static Object[] getAllEvens(int[] array) {
    List<Integer> list = new ArrayList<>();
    for (int no : array) {
        if (no % 2 == 0)
            list.add(no);
    }
    return list.toArray();
}

您还可以返回list而不是list.toArray()以获得更好的列表。