Kezdőoldal » Számítástechnika » Programozás » Szökőév eldöntése Javában?

Szökőév eldöntése Javában?

Figyelt kérdés

"Hozzon létre egy logikai értékkel visszatérő függvényt, ami meghatározza egy adott évről, hogy szökőév-e."


Jól értem, hogy booleannel kell megcsinálni?



2019. máj. 17. 17:16
1 2
 11/18 anonim ***** válasza:
50%
Aki egy ilyen kérdést tesz fel gyakorin, az valószínűleg nem látná át elsőre, hogy mi a bánatot csinál az a ternáris operátorral használt kifejezés. (Sőt lehet azt se tudja, hogy létezik ilyen)
2019. máj. 17. 22:07
Hasznos számodra ez a válasz?
 12/18 anonim ***** válasza:
65%
Kész szerencse, hogy ez nem ternáris, csak simán egy logikai állítás, amit rögtön visszaadunk.
2019. máj. 17. 23:02
Hasznos számodra ez a válasz?
 13/18 anonim ***** válasza:

> Szökőév eldöntése Javában?


Azok számára akik a válaszért jöttek, a standard Java-ban implementálva van LocalDate-ben, Year-ben és sima int számára is a függvény:


LocalDate.now().isLeapYear();

Year.now().isLeap();

Year.isLeap(2019);


A fentebbi függvények évszámtól függetlenül a Gergely-naptár szabályai alapján számolnak. Ha figyelemebe szeretnénk venni hogy 1582 előtt a Julán napárat használták akkor ezt érdemes a GregorianCalendar osztályt használni:


new GregorianCalendar().isLeapYear(2019);


"GregorianCalendar implements proleptic Gregorian and Julian calendars. That is, dates are computed by extrapolating the current rules indefinitely far backward and forward in time. As a result, GregorianCalendar may be used for all years to generate meaningful and consistent results. However, dates obtained using GregorianCalendar are historically accurate only from March 1, 4 AD onward, when modern Julian calendar rules were adopted. Before this date, leap year rules were applied irregularly, and before 45 BC the Julian calendar did not even exist."

2019. máj. 18. 19:42
Hasznos számodra ez a válasz?
 14/18 anonim ***** válasza:
#13: Olvasd el figyelmesen végig a kérdést: ez egy iskolai/gyakorló feladat, aminek az a lényege, hogy a kérdező a függvényt saját kútfejéből implementálja - ne "gyárilag" előre elkészítettet használjon - ezzel gyakorolva a logikai típusok, a függvények visszatérő értékeinek kezelését.
2019. máj. 18. 20:21
Hasznos számodra ez a válasz?
 15/18 anonim ***** válasza:

#14

Te pedig légy szíves a választ. Nem a kérdezőnek írtam hanem azoknak akik esetleg idetévednek és a címben feltett kérdésre keresik a választ, azaz erre: "Szökőév eldöntése Javában?".


Tisztában vagyok vele hogy a kérdező valami iskolai feladatot szeretne megoldani és nem konkrétan arra kíváncsi hogy hogyan lehet eldönteni egy évszámról hogy szökőév -e.

2019. máj. 18. 20:37
Hasznos számodra ez a válasz?
 16/18 anonim ***** válasza:

"Soha nem értettem azokat akik képesek egy


if (expression) return true;


else return false;



kódod írni. Vajon mi veszi rá őket erre?:D"


Azok írnak ilyet, akik gondolnak az utánuk következő programozóra, aki majd a projektet viszi.

Ez a példa még viszonylag egyszerű, de a hajamat tudom kitépni olyanoktól, hogy valaki csak azért is összesűrít valamit 2-3 átlathatatlan sorba, ahelyett, hogy írna egy normálisan áttekinhető, picit hosszabb kódot.

2019. máj. 19. 13:17
Hasznos számodra ez a válasz?
 17/18 anonim ***** válasza:

De itt pont hogy nem átláthatóvá teszi, hanem komplikálja. Sokkal érthetőbb, ha csak simán visszadod a logikai értéket.

Ettől már csak az a rosszabb amikor invertálva van.


Illetve még az if(kifejezes == true) is hasonló kategória.

Nem hiába javítják ezeket ki a fejlesztést segítő eszközök, pl ReSharper.

Kijavítják, tehát egyszerűbbé, átláthatóbbá teszik a kódot mások számára is.


Persze nyilván lehet úgy tömöríteni a kódot, hogy rövidebb legyen és átláthatatlanabb, ahogy mondtad. De a fenti eset nem az.

2019. máj. 19. 14:42
Hasznos számodra ez a válasz?
 18/18 anonim ***** válasza:

Nekem az a tapasztalatom hogy egy rutinosabb fejlesztő számára sokszor a tömör kód nem megzavaró hanem lényegre törő. Én az asztalt fejeltem le mikor a múlthéten többször is belefutottam a következő két sor egyikébe:


return kifejezés ? true : false;

return !kifejezés ? false : true;


Ettől csak egy lépésre van a


if (kifejezés) {

return true;

} else {

return false;

}


Én nem vagyok abban biztos hogy ez átláthatóbb mint a sima "return kifejezés;", de ha le akarjuk a logikát mindenképpen választani a return kifejezésről (van benne ráció), akkor is inkább változó(ka)t használunk, illetve felbontjuk a kifejezést kisebb részekre, if-else hálók helyett.


Mellesleg szerintem igen csak zavaró hogy az IDE (én IntelliJ IDEA-t használok), illetve a Sonar (kódminőség ellenőrző) folyamatosan warningol meg besárgít az ilyen kódok miatt és eltereli a figyelmet a valós, figyelmetlenségekből származó hibákról.


Függetlenül ettől még lehet hogy egy kezdőnek átláthatóbb ha körülményesen kiír mindent, hiszen van különbség azok gondolkodása között akik évek óta a szakmában vannak és azok között akik csak most kezdik, viszont én ha valakit tanítok akkor igyekszem mindig clean kódot mutatni amit érdemes megtanulni és nem olyan kódot ami miatt mások összevonják a szemöldöküket.

2019. máj. 19. 17:05
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!