-3

晚上好
,我正在尝试解决一个问题:

您将获得一个 int[] 标记,其中包含您迄今为止在课堂上获得的成绩。每个等级介于 0 到 10 之间,包括 0 和 10。假设您将在所有未来作业中获得 10 分,请确定您获得 10 的最终成绩所需的未来作业的最小数量。如果您的平均成绩为 9.5 或更高,您将获得 10 的最终成绩。


定义
类:AimToTen
方法:need
参数:int[]
返回:int
方法签名:int need(int[] 标记)
(确保您的方法是公开的)
示例
1)
{9, 10, 10, 9}
返回:0
您的平均值已经是 9.5,因此不需要将来分配。

2)
{8, 9}
返回:4
在这种情况下,您还需要 4 个作业。每完成一个
作业,你的平均分可以分别提高到 9、9.25、9.4 和 9.5

我试图解决的是:

public int need(int[] marks) {
    int i=0, sum = 0, avg = 0, k = 0, counter = 0, ToCompleteMarks[] = null;
    for (i; i < marks.length; i++) {

        sum = sum + marks[i];
        ToCompleteMarks[i] = marks[i] + ToCompleteMarks[i];// To copy the array so when i add 10 later to the program the original array does not change > good ?
    }
    avg = sum / marks.length;


    while (avg < 9.5)
        ToCompleteMarks[i]; //I need to add the number 10 to the array then get back to calculate the avg . But no ideas how to do that ! .
        counter++;

    return counter;

}

如果你能帮助我,我会非常感激

谢谢

4

1 回答 1

0

我们可以执行下面提到的步骤: 1. 得到计算的平均值和期望的平均值之间的差(9.5)让我们说计算的平均值是 8。差是 9.5-8 = 1.5 因此我们可以取上限(天花板使用 Math.ceil(difference) 的差异值)。这里是 2。因此我们需要向数组添加两个赋值。

于 2013-11-12T19:40:33.303 回答