当前位置: 首页 > 知识库问答 >
问题:

我如何将学生添加到花名册中(来自Java中的不同班级)?

孟新知
2023-03-14
public class Student {
private String name;
private String iD;
private boolean tuitionPaid;
/**Constructor*/
public Student(String studentName, String studentID)
{
    name = studentName;
    iD = studentID; 
}
/**Getters and Setters are below*/
public String getStudentName()
{
    return name;
}
public void setStudentName(String studentName)
{
    name = studentName;
}
public String getStudentID()
{
    return iD;
}
public void setStudentID(String studentID)
{
    name = studentID;
}
/**The toString method below*/
public String toString()
{
    String message = name + iD;
    return message;
}
}
public class Course {
private String name;
private int maxSize;
private String[] roster;

public Course(String courseName, int courseMaxSize)
{
    name = courseName;
    maxSize = courseMaxSize;
}


/**Getters and Setters are below*/
public String getCourseName()
{
    return name;
}
public void setCourseName(String courseName)
{
    name = courseName;
}
public int getCourseMaxSize()
{
    return maxSize;
}
public void setCourseMaxSize(int courseMaxSize)
{
    maxSize = courseMaxSize;
}
public String[] getCourseRoster()
{
    return roster;
}
public void setCourseRoster(Student s)
{
    String[] courseRoster = {s.toString()};//intended to pass the student name and ID
        roster = courseRoster;             //to the instance data variable

}

/**The toString method is below*/
public String toString()
{
    String message = name + " course has a class size of " + maxSize;
    return message;
}


/**Three requested methods are below*/
public boolean addStudent(Student s)
{

    boolean atCapacity = false;
    if(roster.length>=5)
    {
        String courseRoster[] = {s.toString()};//intended to pass the formal parameter
        roster = courseRoster;                 //to store as an instance data
        atCapacity = false;

    }
    else
    {
        atCapacity = true;      
    }
    return atCapacity;
}
public boolean dropStudent(Student s)
{
    boolean dropStudent = true;
    for( int index=0; index<roster.length - 1; index++ )//Goes through the roster
    {                                                   
        if( roster[index] == s.getStudentID() )//If a student matches, they are
        {
            s.setStudentID(null);               //dropped a student from a course
            s.setStudentName(null);             //their existence should be null
            dropStudent = true;
        }
        else
        {
            dropStudent = false;
        }
    }   
    return dropStudent;
}
public void printRoster()
{

        if(roster.length == 0)//In case there is no one in the roster
        {
            System.out.println("There is no one in this roster.");//this message prints
        }
        else
        {
        System.out.println(roster);//Everyone in class will be printed
        }
}
}
public class Project2DriverProgram {

public static void main(String[] args) {

    Student[] students = new Student[5];//Creates an array of objects from the Student-class
    students[0] = new Student("Bill", "123");//Instantiates the array at 0 with actual parameters

    Course newCourse = new Course("Philosophy", 5);//Creates an object and instantiates


    newCourse.getCourseRoster();
    newCourse.setCourseRoster(students[0]); //Sets the student to be in the roster

    newCourse.addStudent(students[0]);//Adds student to the course 


    newCourse.printRoster();//prints values of the roster

}

}

共有1个答案

琴琪
2023-03-14

您的代码中有一个逻辑错误:

if(roster.length>=5){
atCapacity = true; 
String[][] roster = {{s.getStudentName()}, {s.getStudentID()}};
}
else{
    atCapacity = false;
}//end of else statement

应更改为:

if(!(roster.length>=5)){
 String[][] roster = {{s.getStudentName()}, {s.getStudentID()}};
 atCapacity = false;
}
else{
  atCapacity = true;
}

相反,当前的代码读作“如果容量大于或等于5然后添加一个新条目”,而实际上您想说“如果容量不大于或等于5添加一个新条目”。

 类似资料:
  • 我正在使用GraphStream库。目前,当我运行我的程序时,它会为我的图形打开新窗口并为我的图形打开单独的窗口。我尝试创建一个并将添加到中,之后我尝试将图形添加到我的中,但它说图形对象不是组件。 这是我的代码: 此程序为和图形打开单独的窗口。我想将我的图形显示在我的或。你知道怎么做吗?我看过这个链接,但它不能很好地解释我。

  • 问题内容: 我之前使用Unix来编译和编辑Java。这样,我就在类文件所在的当前工作目录中使用了属性文件。现在,我已切换到Eclipse IDE。我不知道如何在Eclipse中添加相同的属性文件。请帮我。 问题答案: 如果您在当前工作目录中有属性文件,它应该可以正常工作,就像在Unix中一样。另一种办法是增加你的属性文件到classpath和获取使用的InputStream 更多在这里

  • 我有以下表格: 学生:学生ID(PK),学生姓名 我需要两个问题: > 为学生表中的每个学生id计算该学生在所有课程中的不同(唯一)同学总数的查询。如果学生未注册任何课程,则应返回0。 例如,如果学生_ID 123参加了3门课程,并且每门课程都有10名不同的同学,我应该得到以下结果: 返回所有学生及其所有同学的SQL查询。一个学生的同学是至少在同一个班级注册的另一个学生。

  • 这里有两个类,查询语句和Stackov。arraylist用于存储查询语句类的对象。但是最近添加的对象覆盖了前一个对象。如何添加对象以使它们不被覆盖? QuerySentence.java Stackov.java

  • 我试图在我的Android Studio项目中使用jsoup,但我一直收到这个错误:错误:(10,16)Gradle:错误:包org.jsoup不存在。 你们能告诉我如何将jsoup库添加到我的项目中的步骤吗?提前致谢。 编辑:出于学习目的,我单独运行java代码,没有主活动! 代码:

  • 我正在使用JavaFX开发一个Java桌面应用程序,在开发UI时,我使用Scene Builder8.3.0。我遇到的问题是,当我试图将另一个包的java类添加到我的home.fxml文件时,scene builder没有在列表中显示它。但是如果java类和fxml文件在同一个包(同一个目录)中,我可以将控制器java类(HomeController.java)添加到fxml中。 如何通过scen