0

这可能是一个简单的问题,但我遇到了问题。我有3节课。一个包含 setmethod 的 Student 类:

public boolean setName(String fname)
{
        this.name = fname;
        return true;
}

带有将字符串传递给 setmethod 的 main 的 TestClass

static Student action;

public static void main(String[] args)
{
        action.setName("John");
}

以及一个包含添加学生方法的 Classroom 类。

public boolean add(Student newStudent)
    {
            ???
            return true;
    }

我知道如何创建对象并将其添加到数组列表中,但我对如何使用 3 个单独的类来做到这一点感到困惑。我的数组列表初始化是:

List<Student> studentList = new ArrayList<Student>();

我如何将 Student 类中设置的属性(在这种情况下为名称)与 Classroom 类中创建的新对象相关联?

4

3 回答 3

2

我认为你应该遵循最小意外的原则,即确保你创建的方法完全符合你的需要。在您的示例中,您的setNameandadd方法由于某种原因返回一个布尔值。通常,setter 方法不会返回布尔值,除非您正在执行某种类似 DB 插入的操作并希望确保您的对象已实际插入。

此外,一个典型的习惯用法是在静态 main 方法中创建控制器对象(即TestClass),然后在其构造函数中初始化任何必要的内容,或者通过TestClass在 main 方法本身内部调用创建的对象上的方法。

这是一个解决方案。

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
    }
}
于 2013-03-14T02:50:08.950 回答
1

您的学生课程看起来不错,您的课堂课程应该包含学生列表,以及添加/删除/列出学生的方法。您的测试班应该创建新学生,然后您可以将其添加到您的课堂。

于 2013-03-14T02:43:20.720 回答
1

我假设您想要一个测试班,它是一个像期中或期末考试这样的测试活动,并且您想将学生和教室放在测试班中。

所以你得到了三个类,它们都是相关的。如果这是您想要的情况,那么您可以这样做。(这是一个非常简化的版本!!)

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);
}

也许你可以提供更多关于你的要求的细节。

于 2013-03-14T02:46:20.317 回答