Szukałem wszędzie odpowiedzi na swoje pytanie, ale nigdzie nie znalazłem dokładnie takiego problemu jaki mam ja. Problem wygląda tak:
*int dniPrzydatnosci = 21; - termin przydatnosci w dniach
*Metodę załadunek, która podczas wywołania ustala termin przydatności (oczywiście do czasu pakowania dodaje 21 dni)
Metoda załadunek wywołuje metodę setPrzydatnosc.
*Potrzebuję stworzyć metodę sprawdzPrzydatnosc, która zwroci true/false jezeli produkt jest zdatny lub tez nie
Wymyśliłem coś takiego:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Kontener {
private Cukierek ladunek;
private double masaLadunku;
private String terminWaznosci;
/* Pole dniPrzydatności jest przypisywane
* indywidualnie podczas fabrykowania cukierka
*/
public Kontener(int masaLadunku){
this.masaLadunku = masaLadunku;
}
public void setPrzydatnosc(){
/* Pobieranie dzisiejszej daty
* oraz dodanie do niej wartości
* zmiennej dniPrzydatnosci
* po czym zwrocenie daty
* końca przydatności cukierków
*/
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, ladunek.dniPrzydatnosci);
this.terminWaznosci = simpleDateFormat.format(c.getTime());
}
public void zaladuj(int rodzaj){
if(Fabryka.cukierki[rodzaj].waga<=masaLadunku){
ladunek = Fabryka.cukierki[rodzaj];
setPrzydatnosc();
}else{
System.out.println("Kontener nie jest w stanie pomieścić takiej ilości ładunku!");
}
}
public boolean sprawdzPrzydatnosc(){
boolean zdatne = true;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
if(terminWaznosci.compareTo(c.toString())>0)
zdatne = false;
return zdatne;
}
}
Tylko, że wcześniej zrobiłem to troszkę inaczej strikte działając na dwóch Stringach data = " San 20 1423 CTE 2014" i porównując je. Zwrócono mi uwagę, że gdy chociaż jeden znak bd się różnił no to zmienia sens wszystkiego. Teraz moje pytanie jest takie, czy gdy zrobiłem to w sposób w/w jest w porządku? Bo defacto do znaków dostępu nie mam, tylko działam na tym co jest "generowane".
Oczywiście, jeżeli ktoś jest w stanie zaproponować "bardziej eleganckie" rozwiązanie będę bardzo wdzięczny, no i w miarę możliwości proszę o słowo komentarza, co się dzieje w ewentualnym kodzie.