《数据结构》java版(梁志敏译)有练习题答案吗?1.GradeRecord对象具有指定完成课程数和总成绩的整数属性以及一个用于平均成绩的实数。构造函数创建了一个具有默认值0的对象。操作addGrade()通过输入某课程的成绩来更改这个对象。实参包括课程数和一个表示成绩的字符(即A(4)、B(3)、C(2)、D(1)、F(0),圆括号内是相应的学分数)。操作getGPA()为成绩记录返回平均成绩。在记录任意课程之前,平均成绩被初始化为0.0。
(a)以API格式描述GradeRecord类。
(b)显示GradeRecord类的UML表示法。
(c)给出GradeRecord类的声明。
不明白的地方:
什么叫“指定完成课程数和总成绩”?难道是设置好的吗?为什么整数后边有属性,而实数后边没加属性二字?默认值0是说属性为0还是什么意思?操作getGPA为成绩记录返回平均成绩是什么意思?初始化平均成绩是说在哪里实现?这个类是否只要求有课程数和总成绩就够了,并不提供给出具体的每门课成绩的功能?
最后我写了一下,不知道这样写对不对?我不是学生。有几年工作经验。但是不懂数据结构。没想到这本书第一章的习题就这么难理解。/**
 * 1.GradeRecord对象具有指定完成课程数和总成绩的整数属性
 * 以及一个用于平均成绩的实数。构造函数创建了一个具有默认
 * 值0的对象。操作addGrade()通过输入某课程的成绩来更改这
 * 个对象。实参包括课程数和一个表示成绩的字符(即A(4)、
 * B(3)、C(2)、D(1)、F(0),圆括号内是相应的学分数)。
 * 操作getGPA()为成绩记录返回平均成绩。在记录任意课程之前,
 * 平均成绩被初始化为0.0。
(a)以API格式描述GradeRecord类。
(b)显示GradeRecord类的UML表示法。
(c)给出GradeRecord类的声明。
 * 
 */
package studyDataStructure;/**
 * @author Administrator
 *
 */
public class GradeRecord {
public GradeRecord()
{
this.classfinished=0;
this.totalscore=0;
this.averagescore=0;
}
int classfinished;
int totalscore;
float averagescore;

public GradeRecord addGrade(int sumclass,char score)
{
this.averagescore=0.0f;

int classscore;
switch (score)
{
case 'A':classscore=4;break;
case 'B':classscore=3;break;
case 'C':classscore=2;break;
case 'D':classscore=1;break;
case 'F':classscore=0;break;
default:classscore=0;break;
}
this.totalscore+=classscore;
this.classfinished++;
this.averagescore=this.totalscore/this.classfinished; return this;
}

public float getGPA()
{
return this.averagescore;
}}

解决方案 »

  1.   

    import java.util.*;
    public class test
    {
       public static void main(String[] args)
    {
       Scanner sc=new Scanner(System.in);
     System.out.println("Enter the Course, use 'end' to finish");
       String str=sc.next();
       String st;
       GradeRecord gr=new GradeRecord();
       while(!(str.equals("end")))
    {
       System.out.print("Enter the Score:");
                 st=sc.next();
     char[] c=st.toCharArray();
                 gr.addGrade(c[0]);
     System.out.println("Enter the Course, use 'end' to finish");
     str=sc.next();
    }
     System.out.println("The avgScore is:"+gr.getGPA());
    }
    }
    class GradeRecord
    {
    private int finishCourse;
    private int totalScore;
    private float avgScore;
        public  GradeRecord()
    {
     finishCourse=0;
     totalScore=0;
     avgScore=0;
    }
    public  void addGrade(char c)
    {
            finishCourse++;
    totalScore+='F'-c;
    }
    public float getGPA()
    {
    if(finishCourse==0)
    return 0;
        avgScore=totalScore/finishCourse;
    return avgScore;
    }
    }