这可能是一个简单的问题,但我遇到了问题。我有3节课。包含setmethod的Student类:
public boolean setName(String fname)
{
this.name = fname;
return true;
}
一个带有main的TestClass,它将字符串传递给setmethod
static Student action;
public static void main(String[] args)
{
action.setName("John");
}
和包含添加学生方法的Classroom课程。
public boolean add(Student newStudent)
{
???
return true;
}
我知道如何创建一个对象并将其添加到数组列表中,但我很困惑如何使用3个单独的类来完成它。我的数组列表init是:
List<Student> studentList = new ArrayList<Student>();
如何将在Student类中设置的属性(在本例中为name)与在Classroom类中创建的新对象相关联?
答案 0 :(得分:2)
我认为你应该遵循最小惊喜的原则,即确保你创建的方法完全符合你的需要。在您的示例中,您的setName
和add
方法由于某种原因返回布尔值。通常情况下,setter方法不会返回布尔值,除非您正在进行类似操作的数据库插入,并希望确保实际插入了对象。
另外,一个典型的习惯用法是在静态main方法中创建控制器对象(即TestClass
),然后在其构造函数中初始化任何必要的内容,或者通过调用创建的TestClass
上的方法主方法本身内的对象。
这是一个解决方案。
public class TestClass {
private Classroom c;
public TestClass() {
c = new Classroom();
private Student s = new Student();
s.setName("John");
c.add(s);
}
public static void main(String[] args)
{
new TestClass();
}
}
public Classroom {
private List<Student> studentList;
public Classroom() {
studentList = new ArrayList<Student>();
}
public boolean add(Student newStudent) {
studentList.add(newStudent);
return true; //not sure why you're returning booleans
}
}
答案 1 :(得分:1)
您的学生课程看起来不错,您的课堂课程应包含学生列表,以及添加/删除/列出学生的方法。您的考试班应该创建新的学生,然后您可以将其添加到您的课堂中。
答案 2 :(得分:1)
我假设您想要一个测试类,它是一个测试事件,如期中考试或期末考试,并且您希望将Student和ClassRoom放入测试班。
所以你得到三个班,他们都是相关的。如果是您想要的情况,那么您可以这样做。 (这是一个非常简化的版本!!)
class Test{
String name;
HashMap<ClassRoom, ArrayList<Student> > roomMap;
// ... other functions
}
// you can use ClassRoom as key and Student list as value.
// A ClassRoom key will return a value which is a Student list containg students who are going to take a test in that room.
public static void main(String[] args) {
Test test = new Test();
test.name = "MidTerm";
test.roomMap = new HashMap<ClassRoom, ArrayList<Student> >();
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student("John"));
students.add(new Student("Mark"));
ClassRoom room = new Room("R123");
test.roomMap.put(room, student);
// If there are a lot of test, then you could manage test in an ArrayList in your main.
ArrayList<Test> testList = new ArrayList<Test> ();
testList.add(test);
}
也许您可以提供有关您的要求的更多详细信息。