-4

我有这个代码用于返回低于 60 的分数百分比。但它不会产生所需的百分比。有人帮我找出问题所在。

public float getPercentFailing(float[] grades) {

    float sum= 0;

    for (int i = 0; i < .6; i++) {
        sum = sum + grades[i];
        return sum/100;
    }
    return 0;
}
4

5 回答 5

1

尝试这样的事情。您需要首先将所有成绩相加,这就是您在 for 循环中所做的事情。现在因为我们只想要超过 60 的成绩,所以我们使用一个if语句来检查该值是否高于 60。如果是,将其添加到总和中并计算一个以int count跟踪到目前为止我们已经添加了多少成绩。

for (int i = 0; i < grades.length; i++) {      //loop through all the grades
   if(grade[i] < 60) {                         //if the grade is over 60
       sum = sum + grades[i];                  //add the grade to the sum
       count++                                 //remember how many grades so we can get average
   }
}

然后将成绩的总和除以成绩的总数,或者grades.lengthreturn它。

return sum/count ;                             //calculate average

现在一切都在一起:

public float getPercentFailing(float[] grades) {
    int count=0;
    float sum= 0;
    for (int i = 0; i < grades.length; i++) {
          if(grade[i] < 60) {
             sum = sum + grades[i];
             count++
          }
    }
    return sum/count;

}
于 2012-10-11T00:37:56.347 回答
1

你的逻辑是错误的。您想检查所有成绩并对照 0.6 检查每个成绩(不是循环索引)。你不想平均成绩,你想计算有多少低于阈值。像这样的东西应该工作:

public float getPercentFailing(float[] grades) {

    int failed = 0;

    for (int i = 0; i < grades.length; i++) {
        if (grades[i] < 0.6) {
            failed++;
        }
    }
    return ((float) failed) / grades.length;
}

如果您需要它作为百分比而不是分数,请将最后一行更改为:

    return 100.0f * failed / grades.length;
于 2012-10-11T00:40:43.253 回答
0

您的循环只工作一次, for i=0,因为从toi递增为整数。01

于 2012-10-11T00:36:57.913 回答
0

您想遍历所有成绩并计算低于 60% 的成绩:

int count = 0;
for (int i=0; i!=grades.length; ++i) {
    if (grades[i] < 0.6) {
        count++;
    }
}

return ((float) count)/grades.length

然后您通过将其除以总数来计算百分比

于 2012-10-11T00:39:21.133 回答
-1

变量“i”是一个整数,被用作一个计数器来遍历数组“grades”。使用计数器“i”索引到数组中以获取等级的值,然后使用 if 语句检查它是否是小于 60% 的等级。然后,如果它小于 60%,则将其添加到您的总百分比中并以百分比形式返回该值。

扩展/编辑功能代码:

public float getPercentFailing(float[] grades) {
    int count=0;
    float sum= 0;
    for (int i = 0; i < grades.length; i++) {
        float grade = grades[i];
        if( grade < 0.6 )
            sum = sum + grades[i];
        count++;
    }
    return sum/count;
}
于 2012-10-11T00:45:10.227 回答