【问题标题】:java method to find the evens numbers in an arrayjava方法在数组中查找偶数
【发布时间】:2016-09-27 03:32:23
【问题描述】:

所以我需要编写一个方法来查找传递数组的偶数并将它们返回给用户。但是,我不是将它们作为数组返回,而是作为整数返回。我不确定我为什么要为此苦苦挣扎。我可能只是忽略了一些小事。如果我要返回一个数组,我知道如何让它工作。任何建议将不胜感激。方法如下。

 public static int numEven(int list[]){
    int evens = 0;
    System.out.print("The even numbers in your array are: ");
    for(int i = 0;i < list.length; i++ )
        if(list[i] % 2 == 0)
             evens = list[i];
    return evens;
}

【问题讨论】:

  • 被调用一次的函数只会返回一次值。这不像你会调用一个函数,它会一个接一个地返回多个值。因此,如果您想返回所有偶数值,那么最好使用数组或 Collections 或 Maps 中的东西
  • 将 evens 设为 list[] 长度的数组并返回 evens 数组?
  • How to declare an array的可能重复
  • 您的代码将只返回一个整数
  • 我会,但由于某种原因我不应该将它作为数组返回。

标签: java arrays methods


【解决方案1】:

哪个更接近解决方案,

如果你想返回偶数,你可以像下面这样计数。

// returns the number of "even"
    public static int numEven(int list[]) {
        int evens = 0;
        for (int i = 0; i < list.length; i++)
            if (list[i] % 2 == 0)
                evens++;

        return evens;
    }

或者,如果您想返回输入数组中的偶数,请参见下文。

public static int[] numEvenAsAnArray(int list[]) {
        List<Integer> evens = new ArrayList<Integer>();

        for (int i = 0; i < list.length; i++) {
            if (list[i] % 2 == 0) {
                evens.add(list[i]);
            }
        }

        final int size = evens.size();
        int[] result = new int[size];
        for (int i = 0; i < size; i++) {
            result[i] = evens.get(i).intValue();
        }
        return result;

    }

【讨论】:

    【解决方案2】:

    目前还不清楚你想在这里做什么。你是说你不想返回一个数组,但是你想把偶数返回给用户?您是要返回偶数计数,还是仅返回偶数本身。如果是后者,那么您确实需要返回一个 int[],并且您需要更改您的方法签名以返回一个 int[],而不是一个 int。然后,您可以利用 Java 8 流方法在一行中完成此操作...

    public static int[] numEven(int list[]){
        return IntStream.of(list).filter(i -> i % 2 == 0).toArray();
    }
    
    //Then here's a little helper main method where you really should put
    //that output string you had in your utility method where you're returning
    //your int[] from
    public static void main(String[] args) {
        int[] ints = {1,2,3,5,7,8,9,10,12,13,14,15};
        int[] evens = numEven(ints);
         System.out.print("The even numbers in your array are: ");
        for(Integer i : evens) {
            System.out.println(i + ",");
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      这段代码运行良好:-

      public int countEvens(int[] nums) {
        int count=0;
        for(int i=0;i<=nums.length-1;i++){
          if(nums[i]%2==0){
            count++;
          }
          
        }
        return count;
      }
      

      【讨论】:

      • old answer 中针对同一问题提出了相同的解决方案(只是变量名称不同)。
      • 在阅读了您的评论后,我注意到此处提供了类似于我的解决方案。我在阅读问题后发布了我的答案。如果我知道这里有与我类似的解决方案,那么我就不会发布我的答案了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多