Open ldicandia opened 5 months ago
Buenas, queria saber si estaba bien resuelto antes de ver las soluciones
public class UniqueExam extends Exam{ public UniqueExam(String name){ super(name); } @Override public void enroll(String student) { if(isEnrolled(student)){ return; } super.enroll(student); } }
public class LimitedExam extends UniqueExam{ private String[] pending; private int dim; private final int limit; private static final int INITIAL_DIM = 5; public LimitedExam(String name, int limit){ super(name); this.pending = new String[INITIAL_DIM]; this.limit = limit; } @Override public void enroll(String student) { if(super.getEnrolledCount() == limit){ if(dim == INITIAL_DIM){ resize(); } pending[dim++] = student; return; } super.enroll(student); } @Override public void unenroll(String student){ super.unenroll(student); if(!super.isEnrolled(student) && isPending(student)){ for(int i = 0 ; i < pending.length-1 ; i++){ if(student.equals(pending[i])) { pending[i] = pending[i + 1]; } } dim--; return; } enroll(pending[0]); for (int i = 0; i < pending.length - 1; i++) { pending[i] = pending[i + 1]; } dim--; } public String[] getPendingStudents(){ return Arrays.copyOf(pending, dim); } private void resize() { pending = Arrays.copyOf(pending, pending.length + INITIAL_DIM); } private boolean isPending(String name){ for(int i = 0; i < dim; i++) { if(pending[i].equals(name)) { return true; } } return false; } }
Buenas, queria saber si estaba bien resuelto antes de ver las soluciones