2

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;
}
4

3 に答える 3

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ではありません

于 2010-06-21T01:53:33.863 に答える
1

これは、あなたを導くかもしれないAdaです。

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)

于 2010-06-21T00:59:17.097 に答える
0

の使用を検討しましたMap<Integer, Integer>か? 配列を反復処理し、各番号をチェックして、現在マップのキーであるかどうかを確認できます。その場合は、関連する値を取得してインクリメントします。そうでない場合は、これまでに発生した回数 (1) と共に、その番号をマップに入れます。

次に、ヒストグラムを印刷するときkeySet()は、マップを反復処理して値を取得します。

于 2010-06-21T01:07:21.610 に答える