2016-07-31 13 views
1

Ich habe ein int [] Array erstellt, das nach den Eingaben der Benutzer mit Punkten gefüllt wird. Meine Aufgabe besteht darin, eine Häufigkeitstabelle zu erstellen, die zählt, wie oft ein bestimmter Punktestand vom Benutzer eingegeben wurde. Beispiel: Benutzer eingegeben die folgende Punktzahl, 13,13,13,16,16,19,22. Dann werden in tabellarischer Form 13-3, 16-2, 19-1, 22 - 1. Leider schlechtes EnglischWie erstellt man eine Häufigkeitstabelle (Array von ganzen Zahlen)

Antwort

0

Sie können so etwas wie tun:

Map<Integer, Integer> numberCountMap = .... 
for (int i=0; i<numbers.length; i++) { 
    numberCountMap.compute(numbers[i], (key, value) -> value == null ? 1 : value + 1); 
} 
//print map or sort by value if you need most frequent one to be on top 
+0

Dank Sir! Ich habe vergessen zu erwähnen, dass ich es bereits in aufsteigender Reihenfolge unter Verwendung von Blasensortieren sortiert habe. Und leider dürfen wir dieses "numberCountMap ..." nicht verwenden. Wir sind nur auf Grundlagen. –

0

Dies wird die Arbeit machen

import java.util.HashSet; 
import java.util.Set; 
public class NumbersInArray { 
    public static void main(String[] args) { 
     int [] arr = {1,2,1,1,5,5,5,3,4,5,6}; 
     Set<Integer> set = new HashSet(); 

     //adding numbers to set will remove duplicates 
     for(int i =0 ; i<arr.length;i++) { 
      set.add(arr[i]); 
     } 
     int counter = 0; 
     int[] arrayToCheck = set.stream().mapToInt(Number::intValue).toArray(); 
     for(int i = 0; i<set.size(); i++) { 
      counter = 0; 
      for(int j =0; j<arr.length;j++) { 
       if(arrayToCheck[i]== arr[j]) { 
        counter++; 
       } 
      } 
      System.out.println(arrayToCheck[i] + "-" + counter); 
     } 
    } 
} 
0

In Java 8 können Sie tun, um diesen

Map<Integer, Long> freq = Arrays.stream(array).boxed(). 
       collect(Collectors.groupingBy(Integer::intValue, Collectors.counting())); 
Verwandte Themen