2013-03-22 80 views
-3

我试图通过的空隙多个整数返回数组。事情是这样的:爪哇 - 返回多个整数到一个数组

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; 

      } 

     } 

    } 

} 

我知道这会产生相当多的错误,但有什么办法,我可以返回多个整数数组(有点像上面的程序)?谢谢!

+10

你真的需要学习Java = \。拿一本书或一个在线教程会更好。有很多对[StackOverflow上的Java维基(http://stackoverflow.com/tags/java/info) – 2013-03-22 20:16:10

+0

对不起,有点生疏,建议从回来到Java。 – user1978786 2013-03-22 21:49:44

回答

0

变化:

public static void findEvenNumbers(int min, int max) 

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

这意味着你正打算从函数返回的东西(空意味着什么将被退回)。在这种情况下,将返回一个int数组。

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

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

return arr; 
+0

你还没有展示如何填充'arr',它基本上是答案的核心。 – 2013-03-22 20:18:58

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(调整后的长度)。
0

Noete:你不能从一个函数返回类型为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()); 
} 
+0

这将产生一个ClassCastException,因为'lists.toArray()'将返回一个'Integer []',而不是'int []'。 – 2013-03-22 20:32:39

+0

我改正了它,谢谢@TedHopp – Abraham 2013-03-22 20:37:43

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()); 
     } 

    } 

我建议你做的类,这将让你想什么而不是把一切都在主类,在这里有主要方法:)