2017-10-15 2 views
0

Ich habe ein Array, darunter Doppelzimmer:mit Doppel

double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.12938} 

Die Zahlen in der Anordnung und die Anzahl der Elemente in der Anordnung variieren. Wie kann ich ein Histogramm aus diesem Array erstellen? Ich versuche, Bereiche zu schaffen, indem so etwas wie dies zu tun:

double sizeOfRange = (max-min)/(numberOfRanges-1); 

Wo max und min sind Maximal- und Minimalwerte in myArray, aber anders als das ich vollständig verloren bin darüber, wie dies zu tun. Ich bin sehr neu in Java, hoffe, die Frage wird richtig gestellt.

+0

Histogramm von was ?? Was wird auf beiden Achsen erwartet? –

Antwort

0

Ich bin mir nicht sicher, das ist, was Sie wollen, aber es kann sicherlich helfen, wenn Sie Starter sind:

Double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.56938, 3.65645, 5.65478, 2.54773, 9.63345}; 
    int nRanges = 3; 
    int[] buckets = new int[nRanges]; 
    double max = Collections.max(Arrays.asList(myArray)); 
    double min = Collections.min(Arrays.asList(myArray)); 
    double sizeOfRange = (max-min)/(nRanges - 1); 

    for (double elem : myArray){ 
     for (int i = 0; i < nRanges; i++){ 
      if ((elem >= sizeOfRange * i) && (elem < sizeOfRange * (i + 1))) 
       buckets[i]++; 
     } 
    } 

    for (int i = 0; i < nRanges; i++){ 
     System.out.println(sizeOfRange * i + " - " + sizeOfRange * (i + 1) + ": " + buckets[i]); 
    } 

Collections Klasse viele nützliche Methode bietet, genau wie max und min. Dann ist der Kern dieses Codes von Zeile 8 bis 13: Innerhalb dieser for bin ich inkrementieren die Häufigkeit des Bereichs, in dem der entsprechende double Wert platziert werden kann.