java - 如何高效统计数据

标签 java arrays

我有一系列成绩,想为不同的成绩间隔创建一个计数。 这行得通,但如果要测试的类别更多,输入起来似乎很乏味。

        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/

相关文章:

java - 为 OO 语言编写 API 究竟意味着什么?

Java,使用点数组

java - 在 Java 中创建 boolean 数组的每种组合

java - 比较 Java 中不同类型的 vector

arrays - 如何将数组分成两部分,使两部分的平均值相等?

java - Spring RedirectView 在不同的 tomcat 安装中表现不同

java - 仅从 Android N (--min-api 24) : void butterknife. Unbinder.lambda$static$0() 开始支持静态接口(interface)方法

c# - 为什么 Animals[] animals = new Cat[5] 编译,但 List<Animal> animals = new List<Cat>() 不编译?

python - 将更高维度的立方体与二维数组进行卷积

javascript - 按字母顺序排序总是将所有文本推为第一个选项