Ich versuche, ein Java-Programm zu schreiben, das ein Histogramm von Sternchen für jedes Vorkommen eines Werts in einem Array generiert.Schleifenstruktur für Histogramm
Wenn die Elemente 0,1,2,3,4,5,6,7,8,9 lauten, sollte der Ausgang für jedes Auftreten einen Stern haben. Zum Beispiel
0:*
1:*
2:*
3:*
4:*
5:*
6:*
7:*
8:*
9:*
jedoch meine Ausgabe ist
0:**********
1:
2:
3:
4:
5:
6:
7:
8:
9:
Der folgende Code unter meiner eigenen ist.
public static void drawHistogram(double[] array) {
String count = "";
for (int i = 0; i < array.length; i++) {
if (array[i] >= 0 && array[i] < 1) {
count += "*";
} else if (array[i] >= 1 && array[i] < 2) {
count += "*";
} else if (array[i] >= 2 && array[i] < 3) {
count += "*";
} else if (array[i] >= 3 && array[i] < 4) {
count += "*";
} else if (array[i] >= 4 && array[i] < 5) {
count += "*";
} else if (array[i] >= 5 && array[i] < 6) {
count += "*";
} else if (array[i] >= 6 && array[i] < 7) {
count += "*";
} else if (array[i] >= 2 && array[i] < 8) {
count += "*";
} else if (array[i] >= 2 && array[i] < 9) {
count += "*";
} else if (array[i] >= 9 && array[i] < 10) {
count += "*";
} else if (array[i] >= 10 && array[i] < 11) {
count += "*";
}
}
for (int j = 0; j <= 10; j++) {
System.out.print(j + count);
count = "";
System.out.println();
}
}
Wie kann ich dieses Problem beheben?
Sieht aus wie du bist nur eine Zählung zu halten. Wie erwarten Sie, mehrere Werte mit nur einer Zählung zu verfolgen? –
Ich würde vorschlagen, ein neues Array von Strings namens countStrings [] hinzufügen, wo Element 0 die Anzahl der Werte von weniger als 1 verfolgt, Element 1 verfolgt die Anzahl der Werte von weniger als 2 und so weiter. Im Code jeder 'if'-Bedingung würden Sie dann ein Sternchen an das entsprechende Element im Array anhängen. Zum Beispiel, wenn 'array [i]> = 3 && array [i] <4', würden Sie die Anweisung 'countStrings [3] + =" * ";' –
ausführen. Sie könnten den Code noch weiter vereinfachen, indem Sie '' verwenden Math.floor' -Funktion und loswerden aller if-then-else-Anweisungen. –