自学数据结构,第一章练习一就迷惑了。

zbo 2010-10-19 05:34:27
《数据结构》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;
}

}
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
贪睡的兔子 2010-10-19
  • 打赏
  • 举报
回复
程序的思路应该是你选修几门课程,然后期末时得到成绩,成绩是以等级评定的 A 为4分。。。
只要求返回平均分的话,课程属性也不重要,属性可以理解为字段,
贪睡的兔子 2010-10-19
  • 打赏
  • 举报
回复
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;
}
}
zbo 2010-10-19
  • 打赏
  • 举报
回复
是软件开发,只是我学的差。麻烦看看应该怎么写才好。
贪睡的兔子 2010-10-19
  • 打赏
  • 举报
回复
几年工作经验不是程序方面吧,这只是一道写个类的题目,如果没学过面向对象的话很难讲通

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧