2013-03-22 9 views
-3

Я пытаюсь вернуть несколько целых чисел в массив через пустоту. Что-то вроде этого:Java - Возвращение нескольких целых чисел в массив

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 wiki] (http://stackoverflow.com/tags/java/info) –

+0

Извините, немного ржавый от возвращения на Java. – user1978786

ответ

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', который в основном является очагом ответа. –

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: Вы ничего не можете вернуться из функции с ничтожным типом возвращаемого

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 []'. –

+0

Я исправил его, спасибо @TedHopp – Abraham

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

    } 

Я рекомендую вам сделать классы, которые будут делать то, что вы хотите вместо того, чтобы помещать все в основной класс, где у вас есть основной метод :)

Смежные вопросы