0

我需要在下面的课程中完成以下方法,标记为 a 部分和 b 部分。该课程应该计算数组Grades的gpa,并添加AP课程成绩的奖金。P 表示 AP 成绩。例如“BP”是AP成绩,“B-”是普通成绩。对于 a 部分,我应该为“CP”得到 1.7122 的结果,而对于 b 部分,它需要处理整个等级数组并得到 3.455333 的结果......

我被告知哪些部分是 a 部分和 b 部分,并使用注释标记了它们。我还评论了标签,我认为其余代码应该用于 a 和 b 部分来计算结果。

有人可以解释一下如何做到这一点以及应该使用哪些方法?

这是我的代码(我知道它的格式不正确,它不在 JCreator 中,但我无法将它正确复制到这里):

public class GPAFreeResponse 
{
    private String[] grades    = {"A P", "B+P", "B-P"};
    private String[] ltrGrades = {"A ", "A-", "B+", "B ", "B-",
                                  "C+", "C ", "C-", "D ", "E "};
    private double[] dGrades   = {4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 
                                  2.0, 1.7, 1.3, 1.0, 0.0};
    private double[] bonusPts  = {.0488,.0488,.0366,.0366,.0366,
                                  .0122,.0122,.0122,.0061,.0061, 0.0};
    private double dGrade;

    public GPAFreeResponse()
    {
        dGrade= calculateGrade("C-P") + calculateBonus("C-P"); // part a
        System.out.println("Part 9a): " + dGrade);
        dGrade = calculateGPA();                // part b
        System.out.println("Part (b): " + dGrade);
    }

    public double calculateGPA()                        // part b
    {
        double dResult = 0.0;
        double dTotalQP = 0.0;
        double dBonusPt = 0.0;

        //more code goes here

        return dResult;
    }

    public double calculateGrade(String str)            // part a
    {
        double dResult = 0.0;

        // more stuff here

        return dResult;
    }

    public double calculateBonus(String str)            // part a
    {
        double dResult = 0.0;

        // and more stuff here

        return dResult;
    }

    public static void main(String[] args)
    {
        //create an instance of GPA
        new GPAExtra();
    }    
}
4

1 回答 1

1

我不确定你对 java 了解多少,但由于这是家庭作业,我将用伪代码编写它,然后让你将其翻译成 java。如果您真的遇到困难,请告诉我,我们很乐意为您提供具体代码。

所以,我们将从calculateGrade 开始。您要做的是遍历 ltrGrades 的所有元素,直到找到与输入的前两个字符匹配的元素,这将为您提供所需字母等级的索引。然后,您只需返回 dGrades 相同索引处的值。所以,

initialise string firstTwo as subtring of str from 0 to 1 // you'll have to work out how to actually implement this
repeat with ( i from 0 to the length of ltrGrades )
    if ( firstTwo is equal to the i'th element of ltrGrades ) then
        return the i'th element of dGrades
//catch case where it wasn't found
return 0.0

一旦你有这个工作,或者根本不清楚,请告诉我。

编辑:在有人说这不是最简单的方法之前,我只是在描述您正在寻找的基本算法功能。可以使用方法来改进它,也许可以在数组中找到字符串

编辑 2:这里是您如何实现每个单独部分的细分。

首先,获取str的子串。检查http://www.tutorialspoint.com/java/java_string_substring.htm以获取有关子字符串的信息,但基本上你想要的是类似

String firstTwo = str.substring( 0,2 );

接下来,遍历 ltrGrades,就像这样

for ( int i=0; i<ltrGrades.length; i++ ) {

然后,检查 ltrGrades 的第 i 个元素是否是您想要的子字符串,

if ( firstTwo == lrtGrades[ i ] ) {

最后,如果是,那么您将返回 dGrades 的第 i 个元素,所以

return dGrades[ i ]

抱歉,如果这不完全正确,这一切都来自记忆,所以我确信那里有一些小错误,但应该给你一个想法。让我知道你什么时候一起工作。

于 2013-03-27T00:22:54.897 回答