在Java中创建类时遇到问题。有些方法不太确定
好的,这是我正在做的作业:
实现一个类Student(您可以使用为lab创建的类并将其添加到该类中)。除了该类已有的任何其他属性外,Student对象还将具有总测验分数。请确保编写一个完整的类(即正确的属性、构造函数、访问器和变体)
需要的其他方法有:addquick(int-score)、showStudentInfo()和getAverageScore()。注意,为了计算平均数,全班需要知道测验的数量。 driver/tester类将创建三(3)个student对象。每个学生对象的方法将被调用五次,以添加五(5)个测验分数
我建议您使用随机类来生成测验值,而不是硬编码它们。然后,驱动程序调用Student's method来显示学生的姓名、所有五个测验分数以及测验的平均分数。"
我有一个基本的想法,需要做什么,但我只是不确定的一些方法。例如,“getAverageScore”方法就是我遇到麻烦的方法。如果我只是在测试程序开始时初始化age name和major,我甚至需要get和set方法吗?非常感谢您对我的课堂上需要添加或修改的内容的任何帮助。以下是我目前掌握的代码:
import java.util.Random;
public class Student
{
private int Age;
private String Name;
private String Major;
private int Score;
public Student(String n, int a, String m)
{
Name = n;
Age = a;
Major = m;
}
public String showStudentinfo()
{ return (Name + " " + Age + " " + Major + "\n");
}
public int addQuiz()
{ Score = randomNumbers.nextInt(101);
return Score;
}
public int getAverageScore()
{
}
//setter methods
public void setAge(int a)
{ Age = a;
}
public void setName(String n)
{ Name = n;
}
public void setMajor(String m)
{ Major = m;
}
//getter methods
public int getAge()
{ return Age;
}
public String getName()
{ return Name;
}
public String getMajor()
{ return Major;
}
}
# 1 楼答案
你需要把测验成绩存储在某个地方。你的教授说不止一个。在“Student”构造函数上方,添加大小为5的数组或ArrayList。我将为此使用数组,因此:
然后在获取分数的方法中,使用循环将分数添加到数组中:
然后,您应该能够通过将分数相加并除以5来计算平均分数:
我还没有实际测试过这段代码,我自己也是一名初学者,但希望这能让您走上正确的道路。:)
# 2 楼答案
您必须保留所有分数和测验次数的总和,因此添加两个字段,sumOfQuizGrades和countOfQuizGrades,并通过方法addquick将分数相加并增加计数
顺便说一下,不要更改addquick的签名,它不能包含随机项,随机项应添加到主方法中
# 3 楼答案
字段应以小写字母开头。setter不是强制性的,它只是取决于它是否合理。Methodos AddQuize应该以int作为参数,并且应该有一个int numberOfQuizzes字段。该字段应在每次添加测验分数时递增。平均分数就是总分数除以测验次数
# 4 楼答案
为了使
getAverageScore()
起作用,您需要跟踪个人分数。您可以使用ArrayList<Integer>
这样的方法,并向其中添加个人分数。(或者,您可以保留一个avgScore
属性和一个numOfTests
属性,并根据该属性计算新的平均值——尽管如果您希望将平均值作为int
,这可能会随着时间的推移变得更加不准确)这里是依赖于
ArrayList<Integer>
的解决方案的部分。这里我假设您的方法签名是正确的,并且您实际上不想返回double
或float
(即,您必须向上/向下取整分数)现在,我不向您展示如何正确地实现
scoreList
,因为这是一个家庭作业,您仍然应该自己做一些。提示:您不能在ArrayList
中使用基元类型(如int
),而是需要存储Integer
。您可以使用new Integer(int value)
创建特定值的整数。相反,如果您知道将有固定数量的分数,则可以使用int
数组要使此解决方案工作,您需要添加
scoreList
属性,并且需要更改addQuiz()
的工作方式# 5 楼答案
大部分看起来不错,但也有一些问题,主要与风格有关(可能有点主观)
1)您不会在任何地方初始化随机数
2)变量名称应以小写字母开头。大写的名称通常为类保留
3)不要使用单字母变量名,即使是参数。它们是令人讨厌的模糊信息。使用诸如setAge(intnewage)之类的信息量更大的工具
4)听起来他们想让你存储所有考试分数的总和(这很奇怪,但是嘿),然后计算平均值。要从一个总和中得到平均值,你需要知道总和中包含了多少个测试,所以你必须在某个地方跟踪它,并相应地增加它。在AddQuike中,您现在只需跟踪最近一次测验的分数
5)不要在{的同一行上启动函数体,这很难看