Boa noite, estou realizando um exercício para verificar se um ano informado é bissexto. As regras para verificar se o ano é bissexto são essas:
Para ser bissexto, o ano deve ser:
"Divisível por 4. Sendo assim, a divisão é exata com o resto igual a zero;"
"Não pode ser divisível por 100. Com isso, a divisão não é exata, ou seja, deixa resto diferente de zero;"
"Pode ser que seja divisível por 400. Caso seja divisível por 400, a divisão deve ser exata, deixando o resto igual a zero."
Sendo assim eu pensei em algo do tipo:
import java.util.Scanner;
public class VerificaAnoBissexto {
public static void main(String[] args) {
int ano = 0;
Scanner inputScan = new Scanner(System.in);
System.out.println("Digite o ano a ser verificado: ");
ano = inputScan.nextInt();
if (ano % 4 != 0 && ano % 400 != 0) {
System.out.println("Ano não é bissexto");
} else {
System.out.println("Ano bissexto");
}
}
}
A minha dúvida seria, existe outra forma de fazer essa validação?
Esta forma que usei seria a mais indicada?
Estou estudando em casa, iniciando na linguagem e fazendo todo tipo de exercicio que encontro, agradeço aos colegas desde já.
Você está no caminho certo, mas tem alguns melhorias que podem ser feitas nesse código:
Cadê o tratamento de anos divisíveis por 100?
As regras sao para dizer se um ano é bissexto, mas seu código está escrito para detectar se o ano NAO é bissexto. Isso também funciona, mas geralmente escrever código para o caso negativo da especificaçao deixa mais confuso de entender.
Teste diferentes valores que se encaixam em cada regra para ver se ele funciona em todos casos. Já adianto que tá falhando em alguns.
Um comentário sobre as regras é que elas foram escritas de maneira confusa. Ser divísivel por um número matematicamente falando já implica numa divisao com resto zero. E todo número divisível por 400 é divisível por 100, mas do jeito que tá escrito, nao ser divisível por 100 parece sempre indicar que o ano nao é bissexto.
Num primeiro momento, achei as regras confusas, mas, aí resolvi validar.
1900 é divisível por 100, mas não por 400 (1900%400 != 0)
2000 é divisível por 100 e 400 (2000%400 = 0).
E, para os casos de números não terminados em 0, basta serem divisíveis por 4, como 1988 (1988%4 = 0)