配列内の値の出現ごとにアスタリスクのヒストグラムを生成するJavaプログラムを作成しようとしています。ヒストグラムのループ構造
要素がそれぞれ0,1,2,3,4,5,6,7,8,9の場合、出現ごとにアスタリスクが出力されます。例えば、
0:*
1:*
2:*
3:*
4:*
5:*
6:*
7:*
8:*
9:*
しかし、私の出力は、次のコードは、以下の私自身である
0:**********
1:
2:
3:
4:
5:
6:
7:
8:
9:
です。
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();
}
}
どうすればこの問題を解決できますか?
が見えます。 1つのカウントで複数の値をどのように追跡すると思いますか? –
countStrings []という新しい文字列を追加することをお勧めします。要素0は1未満の値の数を追跡し、要素1は2未満の値の数を追跡します。各if条件のコードで、アスタリスクを配列の適切な要素に追加します。たとえば、 'array [i]> = 3 && array [i] <4'の場合、' countStrings [3] + = "*"; ' –
というステートメントを実行すると、 Math.floor'関数を呼び出して、if-then-else文をすべて削除します。 –