2013-03-22 79 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()); 
     } 

    } 

我建議你做的類,這將讓你想什麼而不是把一切都在主類,在這裏有主要方法:)