Witam serdecznie
Trafiłem na następujący problem. Nie wiem dlaczego metoda findDate() w poniższej klasie zwraca mi losowe wyniki. Jeżeli wywołuję ją 10 razy pod rząd z identycznymi argumentami zwraca mi wyniki prawidłowe i nieprawidłowe w stosunku 50/50.
import java.util.GregorianCalendar;
public class StrangeCalendar{
private static GregorianCalendar[] dates;
public StrangeCalendar(int days){
dates = new GregorianCalendar[days];
GregorianCalendar now = new GregorianCalendar();
GregorianCalendar date;
for(int i = 0; i < dates.length; i++){
date = new GregorianCalendar();
date.set(now.get(now.YEAR), now.get(now.MONTH),
now.get(now.DATE) + i);
dates[i] = date;
}
}
public static int findDate(GregorianCalendar date){
for(int i = 0; i < dates.length; i++){
if(dates[i].equals(date)){
return i;
}
}
return -1;
}
public static void main(String[] args){
StrangeCalendar sc = new StrangeCalendar(31);
GregorianCalendar gc = new GregorianCalendar();
gc.set(2008, 1, 6);
System.out.println(Integer.toString(sc.findDate(gc)));
}
}
Czy ktoś z was mógłby spróbować "ręcznie" uruchomić program 5-8 razy i napisać czy również ma różne wyniki?