0

所以我在 java 中创建了一个程序,您可以在其中输入分数并将它们分类为十分位数(0-9、10-19、20-29、... 80-89、90-100),我已经掌握了关于程序应该如何工作,但我缺少一个关键要素。我创建了一个包含 10 个元素的数组(每个十分位范围一个)。一旦用户输入他们的分数,它就会除以 10,然后需要将分数放入数组中的适当位置,但这就是我迷路的地方。在那之后它必须做很多事情,我理解但是当有人输入 55 以将数组的 50-59 部分增加 1 时,我应该如何告诉代码等等?

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;

仅供参考,鉴于您所说的,您将得到一个 IndexOutOfBoundsException 得分为 100。可能需要处理这个问题。

于 2012-10-16T15:03:33.123 回答
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 回答
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 回答