-4

我正在尝试通过 void 将多个整数返回到数组。像这样的东西:

public class abc {
    public static void main(String[] args) {

        int[] evenNumbers = { findEvenNumbers(0, 10); };

    }

    public static void findEvenNumbers(int min, int max) {

        for(int i = min; i <= max; i++) {

            if((i % 2) == 0) {

                return i;

            }

        }

    }

 }

我知道这会产生很多错误,但是有没有办法可以将多个整数返回到数组中(有点像上面的程序)?谢谢!

4

4 回答 4

4

我认为这可以解决问题:

import java.util.Arrays;

public class Abc {
    public static void main(String[] args) {

        int[] evenNumbers = findEvenNumbers(0, 10);
        // should really do something with the result:
        System.out.println(Arrays.toString(evenNumbers));
    }

    public static int[] findEvenNumbers(int min, int max) {
        int[] result = new int[max - min + 1];
        int n = 0;
        for(int i = min; i <= max; i++) {
            if((i % 2) == 0) {
                result[n++] = i;
            }
        }
        if (n < result.length) {
             result = Arrays.copyOf(result, n);
        }
       return result;
    }

}

对原始代码的更改:

  • 将类名更改为以大写开头(Java 编码约定;不影响行为)。
  • 更改findEvenNumbers为返回一个int[]而不是void
  • 更改了初始化表达式,evenNumbers以考虑findEvenNumbers返回数组而不是int值。
  • 更改正文以将偶数存储在数组中results并返回results(调整长度后)。
于 2013-03-22T20:18:12.863 回答
0

注意:您不能从具有 void 返回类型的函数返回任何内容

   public static Integer[] findEvenNumbers(int min, int max) 
    {
       List<Integer> lists = new ArrayList<Integer>();

      for(int i = min; i <= max; i++) {

        if((i % 2) == 0) {

            lists.add(i);

        }         

    }
 return (Integer[])(lists.toArray());
}
于 2013-03-22T20:20:36.830 回答
0

改变:

public static void findEvenNumbers(int min, int max)

public static int[] findEvenNumbers(int min, int max)

这意味着您打算从函数中返回某些内容(void 表示不会返回任何内容)。在这种情况下,将返回一个整数数组。

从这样的方法创建并返回一个数组:

int[] arr = new int[numberOfElements];
//put stuff in array like this:
arr[0] = 1;
arr[1] = 2;

return arr;
于 2013-03-22T20:18:12.203 回答
0

你可以试试这个:

    private static ArrayList <Integer> evenNumbers = new ArrayList<Integer>();

    public static void findEvenNumbers(int min, int max) {

        for(int i = min; i <= max; i++) {

            if((i % 2) == 0) {

                evenNumbers.add(i);
            }

        }
   }

   public static void main (String [] args){

       findEvenNumbers(0, 10);

       Iterator iterator = evenNumbers.iterator();

       while(iterator.hasNext()){

          System.out.println(iterator.next());
       }

   }

我建议您创建可以制作所需内容的类,而不是将所有内容都放在拥有 main 方法的主类中:)

于 2013-03-22T20:44:49.233 回答