1
resposta

[Sugestão] Resolução dos Desafios 03, 04 e 06 (Com Menus e Loops Infinitos)

Olá, tutores e colegas!

Como já estudei a base de Java antes, usei os desafios para ir além dos enunciados. Em vez de códigos simples que rodam uma vez, decidi deixá-los mais completos: apliquei loops while e for, tratei dados e criei menus infinitos para o usuário escolher quando encerrar o programa.

Abaixo, deixo minhas versões finais limpas. Aceito feedbacks!

Desafio 3 - Crie um menu que oferece duas opções ao usuário: "1. Calcular área do quadrado" e "2. Calcular área do círculo". Solicite a escolha do usuário e realize o cálculo da área com base na opção selecionada.

package primeiroprograma;
import java.util.Scanner;

public class DesafioTres {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("-----Menu-----");
        System.out.println("Opção 1 - Calcular área do quadrado");
        System.out.println("Opção 2 - Calcular área do círculo");
        System.out.println("Opção 3 - Sair");
        System.out.print("Escolha a opção desejada (1, 2 ou 3): ");
        int option = scanner.nextInt();

        while (option != 3) {
            if (option == 1) {
                System.out.print("Digite o tamanho do lado do quadrado: ");
                double lado = scanner.nextDouble();
                double areaQuadrado = (lado * lado);
                System.out.println(String.format("A área do quadrado é %.2f", areaQuadrado));
            } else if (option == 2) {
                System.out.print("Digite o diâmetro do circulo: ");
                double diametro = scanner.nextDouble();
                double raio = (diametro / 2);
                double areaCirculo = (Math.PI * (raio * raio));
                System.out.println(String.format("A área do circulo é %.2f", areaCirculo));
            } else {
                System.out.println("Opção inválida. Tente novamente...");
            }
            System.out.println("Opção 1 - Calcular área do quadrado");
            System.out.println("Opção 2 - Calcular área do círculo");
            System.out.println("Opção 3 - Sair");
            System.out.print("Escolha a opção desejada (1, 2 ou 3): ");
            option = scanner.nextInt(); // Atualiza a variável para o while testar de novo
        }

        System.out.println("Encerrando o programa...");
        scanner.close();
    }
}

Desafio 4 - Crie um programa que solicite ao usuário um número e exiba a tabuada desse número de 1 a 10.

package primeiroprograma;

import java.util.Scanner;

public class DesafioQuatro {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("-- MENU ---");
            System.out.println("1 - Obter Tabuada");
            System.out.println("2 - Sair do programa");
            System.out.print("Escolha a opção desejada: ");
            int opcao = scanner.nextInt();

            if (opcao == 2) {
                System.out.println("Encerrando o programa...");
                break;
            }

            if (opcao == 1) { 
            System.out.println("Digite um número para obter sua tabuada!");
            int numero = scanner.nextInt();
        
            System.out.println("--- Tabuada do " + numero + " ---");

            for (int fator = 1; fator <= 10; fator++) { 
            int produto = numero * fator;
            System.out.println("-------------");
            System.out.println(numero + " x " + fator + " = " + produto);
            }
            }
        }
        scanner.close();
    }
}

Desafio 6 - Crie um programa que solicite ao usuário um número e calcule o fatorial desse número.

package primeiroprograma;

import java.util.Scanner;

public class DesafioSeis {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("-- MENU ---");
            System.out.println("1 - Calcular o fatorial");
            System.out.println("2 - Sair do programa");
            System.out.print("Escolha a opção desejada: ");
            int opcao = scanner.nextInt();

            if (opcao == 2) {
                System.out.println("Encerrando o programa...");
                break;
            }

            if (opcao == 1) { 
            System.out.print("Digite um número para calcular o fatorial: ");
            int numero = scanner.nextInt();
            
            int resultado = 1;

            for (int i = 1; i <= numero; i++) {
                resultado *= i;
            }
            System.out.println("O fatorial de " + numero + " é: " + resultado);
            }
        }
        scanner.close();
    }
}
1 resposta

Olá! Como vai?

A forma como você estruturou os programas com menus interativos, usando while (true) combinado com break para encerrar o fluxo, mostra um entendimento sólido sobre controle de repetição e tomada de decisão. O uso do Scanner para capturar a entrada do usuário com nextInt() ficou bem aplicado nos três desafios, e a separação clara das opções no menu torna o código mais legível e próximo de aplicações reais.

No Desafio 3, a lógica do while testando se a opcao é diferente de 3 funciona corretamente, e o cálculo da área do quadrado e do círculo com Math.PI está preciso. No Desafio 4, o for percorrendo os fatores de 1 a 10 para montar a tabuada do número informado está bem construído. No Desafio 6, o acumulador resultado dentro do for para calcular o fatorial também está correto e claro.

Uma sugestão interessante para o futuro é substituir os blocos if e else if dos menus pela estrutura switch, que organiza as opções de forma mais limpa e facilita a manutenção quando o programa cresce. Veja o exemplo:


int opcao = scanner.nextInt();

switch(opcao){
    case 1:
        System.out.println("Area do quadrado");
        break;
    case 2:
        System.out.println("Area do circulo");
        break;
    case 3:
        System.out.println("Encerrando programa");
        break;
    default:
        System.out.println("Opcao invalida");
}

Esse recurso deixa o código mais legível, especialmente quando há muitas opções diferentes no menu, e é muito utilizado no dia a dia de quem programa em Java.

Você já pensou em adicionar uma validação para impedir que o usuário informe um número negativo no cálculo do fatorial ou um lado igual a zero no cálculo da área do quadrado?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!