我的代码有什么问题。

时间:2012-10-11 00:34:24

标签: java

我有这个代码用于返回低于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;
}

5 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分: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;

答案 2 :(得分:0)

对于i=0,您的循环只能运行一次,因为i会从0增加到1

答案 3 :(得分:0)

您希望遍历所有成绩并计算小于60%的数字:

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

return ((float) count)/grades.length

然后通过总计

来计算百分比

答案 4 :(得分:-1)

变量'i'是一个整数,用作计数器来迭代数组'grade'。使用计数器'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;
}