-4

ボイドを介して配列に複数の整数を返そうとしています。このようなもの:

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ことを考慮して、の初期化式を変更しました。findEvenNumbersint
  • 本体を偶数を配列に格納resultsして返すように変更results(長さ調整後)。
于 2013-03-22T20:18:12.863 に答える
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());
       }

   }

メインメソッドがあるメインクラスにすべてを入れるのではなく、必要なものを作成するクラスを作成することをお勧めします:)

于 2013-03-22T20:44:49.233 に答える
0

変化する:

public static void findEvenNumbers(int min, int max)

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

これは、関数から何かを返すつもりであることを意味します (void は、何も返されないことを意味します)。この場合、int の配列が返されます。

次のようにメソッドから配列を作成して返します。

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

注意: 戻り値の型が 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 に答える