2016-12-02 41 views
1

配列からすべての奇数の整数を見つけ、その整数で新しい配列を返すメソッドを作成しようとしています。別の配列から再帰的に新しい配列を作成する方法

+1

要素を追加するためにArrayList(サイズを定義する必要はありません)を作成することを考えましたか? ArrayListクラスから提供される 'toArray()'メソッドを使用すると、ArrayListから配列に変換することができます。 – Jay

+2

@Jay初期の学問的な演習のように聞こえますが、配列リストにまだ紹介されていないかもしれません。 – JonK

+0

あなたのプログラムでは、他のJavaコレクションを利用できますか?あなたはあなたのfilterOddHelpで "ダイナミックアレイ"構想を使う必要があるからです。 Javaでは「動的配列」なので、ArrayListを使うのが最も簡単な方法です。配列を使用するように代入する場合は、System.arraycopyメソッドを使用して「動的配列」機能を実現するソリューションがあります。 – Vadim

答えて

0

問題は、入力x配列と同じサイズで戻り値配列を初期化することです。 int []のデフォルト値は0です。

あなたがするべきことは、奇数を見つけたら、サイズを1つ減算してから、配列を初期化します。デフォルトでは空のビンはありません。 0

-1

あなたは答えのいくつかの種類を探しているとあなたはあなたのケースで助けることができる例ArrayListためListを使用するのは良い考えです正確なサイズがわからない:

import java.util.ArrayList; 
import java.util.List; 

public class Main { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
     List<Integer> result = filterOdd(a); 
     for (Integer i : result) { 
      System.out.println(i); 
     } 
    } 

    public static List<Integer> filterOdd(int[] m) { 
     return filterOddHelp(m, 0, m.length - 1); 
    } 

    public static List<Integer> filterOddHelp(int[] x, int i, int j) { 
     List<Integer> returnArray = new ArrayList<Integer>(); 
     if (i <= j) { 
      returnArray = filterOddHelp(x, i + 1, j); 
      if (x[i] % 2 != 0) { 
       returnArray.add(x[i]); 
      } 
     } 
     return returnArray; 
    } 
} 

コンソール:

9 
7 
5 
3 
1 

あなたが必要とするアレイの大きさがわからないときは、Listを使用することを検討してください。

+1

このケースでは、完成した作業コードを与えることが正しいと感じていないので、私はdownvotedしました。これは宿題の質問のように読めるので、問題の潜在的な解決方法を説明していても実際に解決するのには至りませんでしたが、質問者は自分自身で解決する機会があります。あなたは実際にこの人と5年間で仕事をしているかもしれないことを心に留めておいてください - そうではないかもしれませんが、スタックオーバーフローの助けを求めるのではなく、良いプログラマーになりたい! – JonK

関連する問題