0

だから私はあなたがスコアを入力するJavaでプログラムを作成していて、それはそれらを十分位数(0-9、10-19、20-29、... 80-89、90-100)に分類し、私は把握していますプログラムがどのように機能するかについて説明していますが、重要な要素が 1 つ欠けています。10 個の要素 (十分位数の範囲ごとに 1 つ) を持つ配列を作成します。ユーザーがスコアを入力すると、10 で除算され、スコアを配列内の適切な場所に配置する必要がありますが、それは私が迷っているところです。その後、たくさんのことをしなければならないことは理解していますが、配列の 50-59 部分を 1 ずつ増やすために誰かが 55 を入力したときに、どのようにコードに伝えればよいのでしょうか?

4

6 に答える 6

2

ええと、それはあなたが望むように聞こえます:

bucketedScores[score / 10]++;

そうでしょう?またはおそらくより明確:

bucketedScores[score / 10] = roughScores[score / 10] + 1;
于 2012-10-16T15:03:42.280 に答える
1
int index = value / 10;
myArray[index] += 1;

参考までに、あなたが言ったことを考えると、スコアが 100 の IndexOutOfBoundsException が発生します。それに対処する必要があるかもしれません。

于 2012-10-16T15:03:33.123 に答える
0

質問によると、ループに入ると、たとえば、100個の値をそれぞれ10〜10で割っているといいのですが。for ループを使用し、入力の反復ごとに入力を一時変数に割り当てることで、ループをチェックして分類します。

for(int i=0; i<=100; i++)
{
    if(a[i] >= 0 && a[i] < 10)
                your desired o/p(execution)
     else if(a[i] > 10 && a[i] < 20)
                your desired o/p(execution)
}
于 2012-10-16T15:16:29.837 に答える
0

範囲には 0 から 101 までの 101 個の値があるため、10 で割る以上のことを行う必要があります。

好きということですか?

int[] scores = new int[10];

int decile = ...
int score = ....

scores[Math.min(9, decile/10)] += score;

これにより、100 が 9 にマッピングされます。別の解決策として、(int)(decile/10.1)0 から 10 を最初の十分位数にマッピングする方法を使用します。

于 2012-10-16T15:04:18.930 に答える
0

この方法で試してみてください....

bucketedScores[score / 10] = roughScores[score / 10] + 1;

于 2012-10-16T15:04:51.640 に答える
0

のように聞こえる

int[] myarray = new int[10];
 // Divide and increase the number returned (like 84/10 = 8 in integer division)
myarray[num/10]++

100 はそれを台無しにしますが、それには特別なケースが必要です。

于 2012-10-16T15:04:57.620 に答える