下图是课程类Course的UML类图,说明如下:
(1)私有数据域,课程名称(courseName),类型为String。
(2)私有数据域,选课学生(students),选课学生名单存放在ArrayList数组链表中。
(2)上述数据域的set和get方法。
(3)一个添加学生的方法addStudent(String student)。在此方法中需要抛出异常,当检测到所添加的学生姓名已经存在于域students中,则抛出异常Exception,附加给该异常的消息格式为"same name"+重复的姓名,但不处理。
(4)一个查询选课学生数量的方法getNumberOfStduents()
(5)一个输出课程信息的方法toString(),可以按照指定格式依次输出课程名称、选课人数、选课学生名单。
完整代码如下 :
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] input = scanner.nextLine().split(" ");
Course c = new Course();
c.setCourseName(input[0]);
for(int i=1; i<input.length; ++i) {
try {
c.addStudent(input[i]);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
System.out.println("课程名称 " + c.getCourseName());
System.out.println("选课人数 " + c.getNumberOfStduents());
StringBuilder sb = new StringBuilder();
for(String s : c.getStudents()) {
sb.append(" ").append(s);
}
System.out.println("学生名单" + sb);
}
public static class Course {
private String courseName;
private List<String> students = new ArrayList<>();
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public List<String> getStudents() {
return students;
}
public void setStudents(List<String> students) {
this.students = students;
}
public void addStudent(String student) throws Exception {
if(students.contains(student)) {
throw new Exception("same name " + student);
}
students.add(student);
}
public int getNumberOfStduents() {
return students.size();
}
@Override
public String toString() {
return super.toString();
}
}
运行结果如下:
OOP Jack Jack Tom
same name Jack
课程名称 OOP
选课人数 2
学生名单 Jack Tom
OOP Jack Tom Bob
课程名称 OOP
选课人数 3
学生名单 Jack Tom Bob
如有帮助,请采纳,十分感谢!