通过starPrint方法,我需要将数组中填充的每个数字的频率显示在直方图中:
1=3***
2=4****
3=7*******
等等。它需要填充的星数等于出现的数字的频率!目前我正在获得数组长度的星号数。
public static void main(String[] args) {
int matrix[][] = new int[100][2];
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = (int) (Math.random() * 6 + 1);
}
}
int[] hist1 = frequency(matrix);
String star = starPrint(hist1);
for (int i = 1; i < hist1.length; i++) {
System.out.print(" \n" + hist1[i] + star);
}
}
public static String starPrint(int[] value) {
String star = "";
for (int i = 0; i < value.length; i++) {
star += "*";
}
return star;
}
public static int[] frequency(int[][] matrix) {
int[] nums = new int[7];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
nums[matrix[i][j]] += 1;
}
}
return nums;
}
答案 0 :(得分:1)
Max_Count : constant Integer := 1_200;
Bin_Size : constant Integer := 100;
--
type Histogram is array (0 .. Max_Count / Bin_Size - 1) of Integer;
Graph : Histogram := (others => 0);
--
for J in Graph'Range loop --'
TIO.Put(Label(J));
for K in 1 .. (Graph(J) * Plot_Size) / Game_Count loop
TIO.Put("*");
end loop;
TIO.New_Line;
end loop;
附录:请注意starPrint()
始终返回相同数量的星星。每次打印hist1[i]
的值时,请打印出那么多星星。
附录:考虑将starPrint(int[] value)
更改为starPrint(int value)
。
答案 1 :(得分:1)
首先,明星应该改变吗?那么
String star = starPrint(hist1);
应该在这里
for (int i = 1; i < hist1.length; i++) {
System.out.print(" \n" + hist1[i] + star);
}
第二个你的starPrint
方法必须改变(除非这是在家庭作业中说明方法的方法???)
public static String starPrint(int[] value) {
到
public static String starPrint(int value) {
这意味着您将需要随机获得的值而不是数组的长度
for (int i = 0; i < value; i++) {
不是value.length
答案 2 :(得分:0)
您是否考虑过使用Map<Integer, Integer>
?您可以遍历数组,并为每个数字检查以查看它当前是否是地图的关键字。如果是这样,获取相关值并递增它。如果没有,请将地图中的数字及其到目前为止的次数(一次)。
然后,当打印直方图时,只需遍历地图的keySet()
,然后获取值。