Mam napisać program wczytujący dzień, miesiąc i rok urodzin, a następnie ma wyświetlić datę w datę w postaci "pół-słownej". Program powinien kontrolować poprawność wprowadzanych danych. W przypadku wczytania niepoprawnych danych (np. nie można urodzić się 35 dnia miesiąca lub 29 lutego 1900) program powinien wyświetlić stosowny komunikat. Ponadto muszę pamiętać o sprawdzeniu roku przestępnego i idących za tym wniosków...
Napisałam takim program, ale jest on dosyć długi i zastanawia mnie czy nie można tego napisać jakoś prościej/krócej: (program nie jest pełen, ma tylko instrukcję Switch gdy rok jest przestępny.. drugiego już nie pisałam bo by się znacznie wydłużyło.
Dziękuje za pomoc.
Rok przestępny i data urodzin ?
-
- Użytkownik
- Posty: 64
- Rejestracja: 3 paź 2009, o 12:15
- Płeć: Mężczyzna
- Podziękował: 16 razy
- Pomógł: 2 razy
Rok przestępny i data urodzin ?
Można to zrobić krócej.
Masz 12 miesięcy. Możesz zadeklarować tablicę, która będzie wskazywała, ile dni ma dany miesiąc.
I wówczas na przykład:
ilosc_dni[0]=31; // miesiac o indeksie 0 to styczen - w tablicach indeksuje sie od zera
Zamiast osobno nazywać miesiące, znów możesz utworzyć tablicę ciągu znaków, gdzie np.:
nazwa_miesiaca[0]="styczen";
I wówczas, zamiast takich rozpatrywania wszystkich warunków, zamiast calej instrukcji switch(miesiac) możesz zrobić:
A jak zrobiłaś rok nieprzestępny? Tak samo, jak przestępny?
Wystarczy do tego dopisać tylko warunek, zmieniający ilość dni lutego w zależności od roku urodzenia. Najmniej modyfikacji będzie, jak w zależności od roku, zmienisz liczbę dni w lutym:
Jakby co, to pisz
pozdrawiam
Masz 12 miesięcy. Możesz zadeklarować tablicę, która będzie wskazywała, ile dni ma dany miesiąc.
I wówczas na przykład:
ilosc_dni[0]=31; // miesiac o indeksie 0 to styczen - w tablicach indeksuje sie od zera
Zamiast osobno nazywać miesiące, znów możesz utworzyć tablicę ciągu znaków, gdzie np.:
nazwa_miesiaca[0]="styczen";
I wówczas, zamiast takich rozpatrywania wszystkich warunków, zamiast calej instrukcji switch(miesiac) możesz zrobić:
Kod: Zaznacz cały
if (dzien>=1 && dzien<=ilosc_dni[miesiac])
System.out.println("Data twoich urodzin to:"+dzien+" "+nazwa_miesiaca[miesiac]+" "+rok);
else
System.out.println("BŁĄD, " + nazwa_miesiaca[miesiac] + " ma max. " + ilosc_dni[miesiac]+ " dni");
Wystarczy do tego dopisać tylko warunek, zmieniający ilość dni lutego w zależności od roku urodzenia. Najmniej modyfikacji będzie, jak w zależności od roku, zmienisz liczbę dni w lutym:
Kod: Zaznacz cały
if ((rok % 4==0) && (rok % 100 !=0) || (rok % 400==0))
ilosc_dni[1]=29;
else
ilosc_dni[1]=28;
pozdrawiam