Oii, Michel.
Você demonstrou uma excelente organização ao separar cada exercício em uma classe diferente e criar um arquivo Main.java para gerenciar a execução de todos eles. Isso mostra que você já está aplicando conceitos importantes de modularização, o que facilita muito a manutenção do código.
Destaquei os pontos fortes do seu código e algumas sugestões de melhoria para aprimorar sua lógica de programação.
Pontos fortes
- Organização do projeto: A estrutura de arquivos separada mantém o código limpo e fácil de entender.
- Uso de text blocks: No arquivo
MenuOpcoes.java, você utilizou as três aspas (""") para textos longos. Essa é uma funcionalidade do Java que deixa a formatação de menus muito mais legível. - Interação com o usuário: As mensagens de entrada e saída estão claras, orientando bem quem está usando o programa.
Sugestões de melhoria
Analisei seu código e encontrei três pontos onde podemos fazer ajustes para evitar erros de lógica e melhorar a performance.
1. Lógica de comparação (SemelhancaNumeros.java)
Existe um comportamento inesperado no seu código se o usuário digitar dois números iguais (exemplo: 5 e 5).
- O que acontece hoje: O código verifica se são iguais e imprime "Os números são iguais". Logo em seguida, ele entra no segundo bloco
if/else. Como 5 > 5 é falso, ele cai no else e imprime "O segundo número é maior do que o primeiro". - Resultado na tela: O usuário vê duas mensagens contraditórias.
- Correção: Devemos encadear as condições usando
else if. Dessa forma, apenas uma das opções será executada.
if (numero1 == numero2) {
System.out.println("Os números são iguais");
} else if (numero1 > numero2) {
System.out.println("O primeiro número é maior");
} else {
System.out.println("O segundo número é maior");
}
2. Simplificação do fatorial (Fatorial.java)
Sua lógica funciona, mas é um pouco complexa devido à verificação if(resultadoFatorial == 0) dentro do loop.
Podemos inicializar a variável com 1 (elemento neutro da multiplicação) e apenas multiplicar sequencialmente:
int fatorial = 1;
// O loop calcula: 1 * 1 * 2 * 3 ... até o número desejado
for (int i = 1; i <= numero; i++) {
fatorial *= i;
}
3. Chamada de métodos estáticos (Main.java)
No seu arquivo principal, você instanciou as classes (criou objetos com new) para chamar o método main().
Como você declarou esses métodos como public static void main(), eles pertencem à classe e não precisam de um objeto para serem usados. Isso economiza memória e é a forma padrão de acessar métodos estáticos em Java.
Fatorial fatorial = new Fatorial();
fatorial.main();
Fatorial.main();
MenuOpcoes.main();
// E assim por diante...
Você construiu uma base muito sólida. Os ajustes sugeridos acima são naturais no processo de aprendizado e servem para refinar sua lógica.
Recomendo que você tente aplicar a correção no arquivo SemelhancaNumeros.java primeiro, pois isso corrige um erro de lógica que afeta o resultado final para o usuário.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!