Por que meu algoritmo do ano bissexto não está funcionando (Java)? [duplicado]
Esta pergunta já tem uma resposta aqui:
Código Java para calcular o ano bissexto 21 respostasAqui está o que eu tenho:
Scanner input = new Scanner(System.in);
System.out.print("Enter a year: ");
int Year = input.nextInt();
System.out.print("Enter a month (first three letters with the first"
+ " letter uppercase): ");
String Month = input.next();
String ThirtyOne = "Jan" + "Mar" + "May" + "Jul" + "Aug" + "Oct" + "Dec";
String DaysThirtyOne = ThirtyOne.substring(21) + "31";
String Thirty = "Apr" + "Jun" + "Sep" + "Nov";
String DaysThirty = Thirty.substring(12) + "30";
String TwentyEight = "Feb";
String DaysTwentyEight = TwentyEight.substring(3) + "28";
String DaysLeapYear = TwentyEight.substring(3) + "29";
boolean isLeapYear = ((Year % 4 == 0) && (Year % 100 != 0) && (Year % 400 == 0));
if (ThirtyOne.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysThirtyOne
+ " days in it.");
}
if (Thirty.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysThirty
+ " days in it.");
}
if(TwentyEight.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysTwentyEight
+ " days in it.");
}
if (isLeapYear) {
System.out.println(Month + " " + Year + " has " + DaysLeapYear
+ " days in it.");
}
Eu sou novo em programação, então não ficaria surpreso se esse código parecer imaturo. Enfim, eu tenho o usuário digitar um ano e um mês (três primeiras letras). Criei uma variável booleana para um ano bissexto que diz em qualquer ano que as entradas do usuário precisem ser divisíveis por 4, 100 e 400. Em seguida, criei uma instrução if para se for um ano bissexto para imprimir "Fevereiro (qualquer ano as entradas do usuário) tem DaysLeapYear. " Eu acho que tenho algo errado com meu algoritmo, porque se eu retirar a declaração if do TwentyEight e continuar com o ano bissexto if, o computador nem sequer imprime quantos dias Feb teria se fosse um ano bissexto . Mais uma vez, acho que estou errado no algoritmo, mas poderia estar em outro lugar e eu estava esperando uma nova olhada nisso para ver se alguém vê algo que eu não sou, já que sou novo nisso, afinal.