public class Solution {
public static void main(String[] args) throws Exception {
//tutaj wpisz swój kod
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String rok = reader.readLine();
int nRok = Integer.parseInt(rok);
if((nRok % 400 == 0) || (nRok % 4 == 0)) {
int x = 366;
System.out.println("Liczba dni w roku: " + x);
} else if(nRok % 100 == 0) {
int x = 365;
System.out.println("Liczba dni w roku: " + x);
}
}
}
Can you tell me where is error in my code , because I don't found them.I don't know where is my error
Resolved
Comments (4)
- Popular
- New
- Old
You must be signed in to leave a comment
Jacek
15 December 2019, 18:44
1. Line 9 is bad.
Condition " (nRok % 100 == 0) " is more important than " (nRok % 4 == 0) "
2. last condition is missing:
else {
System.out.println("Liczba dni w roku: 365");
}
0
Piotr Pomaski
16 December 2019, 18:23
Can you explain to me why " (nRok % 100 == 0) " is more important than " (nRok % 4 == 0) " ?
0
Jacek
16 December 2019, 21:17
Wynika to z algorytmu liczenia roku przestępnego i nota bene było w treści zadania.
http://www.algorytm.org/przetwarzanie-dat/wyznaczanie-lat-przestepnych.html
"Obecnie stosuje się formułę zgodną z kalendarzem Gregoriańskim wprowadzonym w 1582 roku przez papieża Grzegorza XIII, w którym rok przestępny spełnia jeden z następujących warunków:
jest podzielny przez 4, ale nie jest podzielny przez 100
jest podzielny przez 400"
warunek podzielności przez 4 i niepodzielności przez 100 jest łączny, a ty je w swoim kodzie rozseparowałeś, wg twojego kodu wystarczy żeby był podzielny bez reszty przez 4 i już jest rok przestępny.
A powinieneś sprawdzić czy jednocześnie jest podzielny przez 4 i niepodzielny przez 100. Możesz to zrobić warunkiem łącznym lub wpierw sprawdzić kwestie podzielności przez 100 i dopiero wtedy jeśli jest niepodzielny przez 100, to sprawdzić czy jest podzielny przez 4
0
Guadalupe Gagnon
15 December 2019, 17:39
you need to share the solution or we cannot help
0