2017-05-24 9 views
0

私はメソッドのループを使用せずに、配列内の出現の合計を出力する再帰的メソッドを書きたいと思う。 メソッドget array-arr {1,1,2,3,3,3,3} メソッドは1:2 2:1 3:4を出力します。 これはいくつかのメソッドを書きます 最初のメソッドこの配列をソートする 配列インデックスとこのインデックスの番号を取得し、例えばfuncJump(arr、1,1)の上の配列に別の番号の次のインデックスを返すメソッド は3つのbeacuseを返す 私はこの問題を解決するために何をすると思いますか最初に配列をソートし、2つの関数を書くために関数を使用しています public static void printFrequencies(int[]arr)//will print public static int printFrequencies(int[]arr,int ix){//scan the array and send void関数dourencesの合計 私は関数を使用すると思います異なるインデックスを取得してそれらをvoid関数に送るために "ジャンプ"する印刷のために私は本当に私のプログラムにこの考え方を適用するために固執した。 それは良い考えだと思いますか? 私はこれを私のプログラムにアプレイすることができますか?再帰的メソッドを使用して配列内のnumer occurencesの合計を表示する - java

+0

良いことは、あなたが書かれている現在のコードを提供することであり、また、あなたには、いくつかの「モックコード」を作りたいのアプローチについて、あなたの思考の一部を示しています。それは完全な画像を取得することが簡単で、そのようないくつかのポインタを与える。あなたに完全なソリューションを提供する代わりに。 –

+0

ちょうどあなたが知っていることを確認する:これは再帰なしで解決することができます。とにかく再帰的なソリューションを先取りしたいと思っても、私はさらに抗議するつもりはありません。 –

+0

私が試したことを見てくださいhttps://pastebin.com/WzC8ABJY – MarcoPolo

答えて

0
public void printFrequencies(Integer[] array){ 
    Map<Integer, Integer> map = new HashMap<Integer,Integer>(); 
    for(int i = 0 ; i<array.length;i++){ 
     Integer temp = array[i]; 
     Integer count = map.get(temp); 
     if(null == count){ 
      map.put(temp, 1); 
     }else{ 
      map.put(temp, map.get(temp)+1); 
     } 
    } 
    for(Integer key : map.keySet()){ 
     System.out.println(key+":"+map.get(key)); 
    } 
} 
+0

私が試したことを見てくださいhttps:// pastebin.com/WzC8ABJY – MarcoPolo

0

私はあなたのコードを読んで、理解しているほうがいいと思います。重複するアイテムを削除するために、私はマップを使用しました。

public class Part01 { 
public static void main(String[] args) { 
    int[] nums = {1,2,2,1,1,3,3,4}; 
    Part01 part01 = new Part01(); 
    part01.countAllNumber(nums); 
} 

public int countNumber(int[] nums,int num){ 
    int count = 0; 
    for(int i = 0;i < nums.length;i++){ 
     if(nums[i] == num) 
      count++; 
    } 

    return count; 
} 

public void countAllNumber(int[] nums){ 
    Map<Integer,Integer> map = new HashMap<Integer,Integer>(); 
    for(int i = 0;i < nums.length;i++){ 
     int count = countNumber(nums, nums[i]); 
     map.put(nums[i], count); 
    } 

    for(Integer key : map.keySet()){ 
     System.out.println(key+":"+map.get(key)); 
    } 
} 

}

+0

ルーズとマップは、私が使いたいメソッドでのみ使用したいと思う学校への使用を許可されていません... – MarcoPolo

関連する問題