我有这个代码用于返回低于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;
}
答案 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.length
和return
。
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;
}