2012-10-16 123 views
0

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

+2

研究整数除法。将59除以10得到5. –

回答

1
int index = value/10; 
myArray[index] += 1; 

仅供参考,根据您的说法,您将得到一个IndexOutOfBoundsException,并得分为100.可能需要处理该问题。

2

嗯,这听起来像你只是想:

bucketedScores[score/10]++; 

不好吗?或者可能更清楚:

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

由于范围是具有101个值从0到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到第一等分。

+0

如果有0-10的十进制数,为什么要将十分数除以10? –

+0

因为每个十分位数都有10个,所以这个名字。问题是在0到100之间有11个十进制数。 –

+0

但是将十分位数除以零,你只能得到0或1。 OP的问题是关于如何计算十分位数。 –

0

尝试这种方式....

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

0

听起来

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

虽然100将它扔了,你就需要一个特殊情况。

+0

那么,我不打算让你初始化这个数组的时候,你是不喜欢的。但我不会,因为你确实提出了100是特例的观点。 –

+0

仅供参考,不需要用'0'初始化数组,这是'int'的默认值 –

+0

我刚才想到如果情况有变化,并且说如果score = 100就可以将它放入90-100的十分位数中,但我怎么会这样说呢? –

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) 
}