[英]How to create Histogram?
我必须创建一个直方图来对 NBA 球员的身高进行排序。 输入进入控制台。 输出应该是这样的:
Num bins: 16
Min: 63
Max: 91
Avg: 78.42798594847775
722
+-+
|*|
|*|
611 |*|
+-+ |*|
524 |*| |*|
+-+ |*| |*|
|*| |*| |*| 459
|*| |*| |*| +-+
361 |*| |*| |*| |*|
+-+ |*| |*| |*| 352 |*|
|*| |*| |*| |*| +-+ |*|
|*| |*| |*| |*| |*| |*|
|*| |*| |*| |*| |*| |*|
|*| |*| |*| |*| |*| |*| 188
|*| |*| |*| |*| |*| |*| +-+
|*| |*| |*| |*| |*| |*| |*|
88 |*| |*| |*| |*| |*| |*| |*|
53 +-+ |*| |*| |*| |*| |*| |*| |*|
1 1 4 7 +-+ |*| |*| |*| |*| |*| |*| |*| |*| 34 7 4
------------------------------------------------------------------
63 64 66 68 70 72 73 75 77 79 81 82 84 86 88 90
到目前为止,我有:
package a3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ConsoleHIstogram {
public static void main(String[] args) {
// Set up scanner for input from console.
Scanner scan = new Scanner(System.in);
int bin = scan.nextInt();
ArrayList<Integer> heights = new ArrayList<Integer>();
int firstNum = scan.nextInt();
double sumOfHeights = 0;
int start = scan.nextInt();
while (scan.hasNextInt()) {
heights.add(start);
start = scan.nextInt();
sumOfHeights += start;
}
int numOfPlayers = heights.size();
double avgHeight = numOfPlayers / sumOfHeights;
int minimum = 999999;
for (int i = 0; i < heights.size(); i++) {
if (minimum > heights.get(i)) {
minimum = heights.get(i);
}
}
int maximum = 0;
for (int i = 0; i < heights.size(); i++) {
if (maximum < heights.get(i)) {
maximum = heights.get(i);
}
}
// int[] heightArr = new int[maximum];
ArrayList<Integer> heightArr = new ArrayList<Integer>();
for (int i = minimum; i < maximum; i++) {
heightArr.add(i);
}
System.out.println("Num bins: " + firstNum);
System.out.println("Avg: " + avgHeight);
System.out.println("Num bins: " + bin);
for (int i = 0; i < heights.size(); i++) {
if (heightArr.get(i) > 0) {
System.out.print(heightArr.get(i));
for (int j = 0; j < heights.get(i); j++) {
System.out.print("*");
}
for (int j = heights.get(i) - 1; j < heights.get(i); j++) {
System.out.println("*");
}
}
}
我遇到的主要问题是如何创建“垃圾箱”。 到目前为止,我的输出没有任何垃圾箱,也没有真正格式化,我想知道我将如何做到这一点。 任何帮助,将不胜感激。 谢谢
“垃圾箱”的答案是你从最高的人的身高中减去最短球员的身高,然后除以你的垃圾箱的数量。 所以现在你有一个垃圾箱的大小。 有了这个数字,您就知道如何将玩家放入正确的垃圾箱中。
例如你有 10 个箱子,最短的玩家是 100,最高的玩家是 200。所以你知道 (200-100)/10 是 10,所以一个箱子的大小是 10。第一个箱子是从 100 到 110,第二个是从 111 到 120 等等。
接下来遍历玩家。 第一个玩家是 136。所以 (136-100)/10 是 3.6,这意味着它应该在第三个 bin 中。 因此,您将 +1 添加到第三个 bin。
所以“bins”只是一个包含玩家数量的int数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.