0

これは、私が持っている次の大学の実用的なコードです。

import java.util.Random;

public class Practical4_Assessed 
{

public static void main(String[] args) 
{

    Random numberGenerator = new Random ();
    int[] arrayOfGenerator = new int[100];
    int[] countOfArray     = new int[10];
    int count;

    for (int countOfGenerator = 0; countOfGenerator < 100; countOfGenerator++)
    {
        count = numberGenerator.nextInt(10);
        countOfArray[count]++;
        arrayOfGenerator[countOfGenerator] = count + 1;
    }

    int countOfNumbersOnLine = 0;
    for (int countOfOutput = 0; countOfOutput < 100; countOfOutput++)
    {
        if (countOfNumbersOnLine == 10)
        {
            System.out.println("");
            countOfNumbersOnLine = 0;
            countOfOutput--;
        }
        else
        {
            if (arrayOfGenerator[countOfOutput] == 10)
            {
                System.out.print(arrayOfGenerator[countOfOutput] + "  ");
                countOfNumbersOnLine++;
            }
            else
            {
                System.out.print(arrayOfGenerator[countOfOutput] + "   ");
                countOfNumbersOnLine++;
            }
        }
    }

    System.out.println("");
    System.out.println("");

    String occurrencesReport = "";
    String graph = "";

    for (int countOfNumbers = 0; countOfNumbers < countOfArray.length; countOfNumbers++)
    {
        occurrencesReport += "The number " + (countOfNumbers + 1) + 
            " occurs " + countOfArray[countOfNumbers] + " times.";

        if (countOfNumbers != 9)
            graph += (countOfNumbers + 1) + "   ";
        else
            graph += (countOfNumbers + 1) + "  ";

        for (int a = 0; a < countOfArray[countOfNumbers]; a++)
        {
            graph += "*";
        }
        occurrencesReport += "\n";
        graph += "\n";
    }

    System.out.println(occurrencesReport);
    System.out.println(graph);

    int max = 0;
    int test = 0;
    for (int counter = 0; counter < countOfArray.length; counter++)
    {
        if (countOfArray[counter] >= max)
        {
            max = countOfArray[counter];
            test = counter + 1;
        }
    }

    System.out.println("The number that appears the most is " + test + ".");

}
}

プログラムは、乱数ジェネレーターによって生成された100個の整数(すべて1〜10)を格納する配列を作成し、この配列の10個の数値を1行に出力します。次に、これらの整数をスキャンし、各数値が表示される頻度をカウントして、結果を2番目の配列に格納します。これに続いて、各番号が表示される頻度を示すアスタリスクの水平棒グラフを出力してから、最終的に最も頻繁に表示される番号を出力します。

コードは完全に完成したと思っていましたが、複数の数字が同じ回数発生した場合、コードの最後の部分ではこれを処理できないことに気付きました。たとえば、数字の3と5の両方が12と表示された場合です。場合によっては、コードはそのうちの1つしか生成できません。

誰かがこれを回避する方法がありますか?

ありがとう、アンドリュー

4

3 に答える 3

0

これはちょっとした宿題ではないと思いますので、これとは別のアプローチを提供します。

-の代わりにCollectionlikeを使用します。ArrayListArray

-のような方法を使用して、その中で値が発生Collections.frequency(Object o)た回数を確認します。Collection

于 2012-10-28T18:24:48.133 に答える
0

ただする代わりに

System.out.println("The number that appears the most is " + test + ".");

もう一度ループしcountOfArray、と同じ値を持つ要素ごとに印刷を実行しますmax

于 2012-10-28T18:36:52.437 に答える
0

これに対処する方法はいくつかあり、迅速なものから複雑なものまでさまざまです。最も簡単な方法は、次のようにブルートフォースすることです。

int max = 0;
//int test = 0;
for (int counter = 0; counter < countOfArray.length; counter++)
{
    if (countOfArray[counter] >= max)
    {
        max = countOfArray[counter];
        //test = counter + 1;
    }
}

System.out.print("The number that appears the most is");
boolean first = true;
for(int i = 0; i < countOfArray.length; i++)
{
    if(countOfArray[i] == max)
    {
        if(first)
            first = false;
        else
            System.out.print(",");
        System.out.print(" " + (i+1) );
    }
}
System.out.println(".");

出力は次のとおりです。

6   2   6   5   6   8   9   3   5   8   
9   8   10  10  4   5   8   9   8   5   
1   7   8   5   6   7   10  4   5   4   
2   7   9   2   3   3   1   2   10  3   
5   2   10  1   1   6   3   3   8   10  
2   6   10  2   5   1   4   10  8   7   
7   8   7   3   7   8   3   4   5   5   
7   8   9   8   6   6   8   1   10  3   
2   5   4   6   9   9   10  10  1   10  
9   4   10  9   7   3   4   3   2   4   

The number 1 occurs 7 times.
The number 2 occurs 9 times.
The number 3 occurs 11 times.
The number 4 occurs 9 times.
The number 5 occurs 11 times.
The number 6 occurs 9 times.
The number 7 occurs 9 times.
The number 8 occurs 13 times.
The number 9 occurs 9 times.
The number 10 occurs 13 times.

1   *******
2   *********
3   ***********
4   *********
5   ***********
6   *********
7   *********
8   *************
9   *********
10  *************

The number that appears the most is 8, 10.

それについてはもっとクリーンな方法がありますが、うまくいけば、それはあなたにまともなスタートを与えるでしょう!

于 2012-10-28T18:37:12.163 に答える