Je dois créer un programme qui trouvera commonDates dans une liste de personnes.Out of BoundsException
public DateSet commonDates() {
if (persons.size() >= 2) {
DateSet Cdates =
persons.get(0).getDateSet().intersection(persons.get(1).getDateSet());
for (int i = 2; i < persons.size(); i++) {
Cdates = Cdates.intersection(persons.get(i).getDateSet());
}
return Cdates;
}
else {
throw new IllegalArgumentException();
}
}
c'est la méthode d'intersection:
public DateSet intersection(DateSet other) {
DateSet dates2 = (DateSet) other;
DateSet NewDateSet = new DateSet();
for(int i = 0; i < dates.size(); i++) {
if (dates.get(i).equals(dates2.dates.get(i))) {
NewDateSet.add(dates.get(i));
}
}
return NewDateSet;
}
Le test JUnit pour commonDates ressemble à ce
@Test
public void testCommonDates() {
DatePicker persons = new DatePicker();
List<Date> dates = new ArrayList<Date>();
Person P1 = new Person("Joop");
Person P2 = new Person("Joopie");
Person P3 = new Person("Jaapie");
Date D1 = new Date("maandag");
Date D2 = new Date("dinsdag");
dates.add(D1);
persons.addPerson(P1);
persons.addPerson(P2);
P1.add(D1);
P2.add(D1);
P3.add(D1);
P1.add(D2);
assertThat("commonDates should return dates all persons have in common", persons.commonDates(), equalTo(dates));
}
Ce sont les messages d'erreur que je reçois
Merci en avance
Il serait vraiment utile si vous réduisiez cela à un [mcve] - et suivez les conventions de nommage Java que vous allez. Bien que nous ayons tout ce dont nous avons besoin pour reproduire cela, il y en a plus que nécessaire, et ce n'est pas sous une forme pratique à reproduire. De plus, vous ne nous avez pas dit ce que vos investigations diagnostiques ont montré. (Indice: Je suis assez sûr que le problème est que votre méthode 'intersection' suppose que les deux' DateSet' ont le même nombre d'entrées ...) –
La plupart des types de données que vous mentionnez dans le code ne font pas partie de Java Standard , Quels sont ces? –
Pouvez-vous essayer size() - 1 pour chaque boucle? –