我有一系列成绩,想为不同的成绩间隔创建一个计数。 这行得通,但如果要测试的类别更多,输入起来似乎很乏味。
for (int x: grades){
if (x < 10) {
tally[0] += 1;
} else if (x < 20) {
tally[1] += 1;
} else if (x < 30) {
tally[2] += 1;
} else if (x < 40) {
tally[3] += 1;
} else if (x < 50) {
tally[4] += 1;
} else if (x < 60) {
tally[5] += 1;
} else if (x < 70) {
tally[6] += 1;
} else if (x < 80) {
tally[7] += 1;
} else if (x < 90) {
tally[8] += 1;
} else if (x < 100) {
tally[9] += 1;
}
}
}
还有其他方法吗?
最佳答案
对于任何区间,伪代码都是
int intervals[11]={0,10,20,30,40,50,60,70,80,90};
for(int i=1; i<11; i++)
{
if(x>=intervals[i-1] && x<intervals[i])
tally[i-1]+=1;
}
但如果它们就那么简单(10 的倍数):
for(int i=1; i<11; i++)
{
if(x>=(i-1)*10 && x<i*10)
tally[i-1]+=1;
}
@编辑 或者实际上你可以:
int intervals[10]={10,20,30,40,50,60,70,80,90};
for(int i=0; i<10; i++)
{
if(x<intervals[i])
{tally[i]+=1; break;}
}
关于java - 如何高效统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755296/