Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Desafio: hora da prática

import java.util.Scanner;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static int fatorialRecursivo(int n) {
        if (n == 1) {
            return 1;
        }
        return n * fatorialRecursivo(n-1);
    }


    public static void main(String[] args) {

        // Crie um programa que solicite ao usuário digitar um número.
        // Se o número for positivo, exiba "Número positivo", caso
        // contrário, exiba "Número negativo".

        System.out.println("AVALIADOR DE NÚMERO POSITIVO OU NEGATIVO!");
        System.out.println("Digite um número inteiro e diferente de 0:");
        Scanner sc = new Scanner(System.in);



        // Preciso de um tratamento de erro p/ 0;
        int n0;
        do {
             n0 = sc.nextInt();
            if (n0 > 0) {
                System.out.println("Número positivo!");
            } else if (n0 < 0) {
                System.out.println("Número negativo!");
            } else {
                System.out.println("Digite um número inteiro e diferente de 0:");
            }
        } while (n0 == 0);



        // Peça ao usuário para inserir dois números inteiros. Compare os números
        // e imprima uma mensagem indicando se são iguais, diferentes, o primeiro
        // é maior ou o segundo é maior.

        System.out.println("\n COMPARADOR DE INTEIROS");
        System.out.println("Insira 2 números inteiros e os separe por espaço!");
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();

            if (n1 != n2) {
                System.out.println("Os números são diferentes!");

                if (n1 > n2) {
                    System.out.println("O " + n1 + " é maior que " + n2);
                } else if (n1 < n2 ){
                    System.out.println("O " + n1 + " é menor que " + n2);
                }

            } else {
                System.out.println("Os números são iguais!" );

            }

     
          
        System.out.println("\n CALCULADOR DE ÁREA");

        System.out.println(" Se deseja calcular a área do quadrado, digite 1. Já se deseja calcular a área do cículo, digite 2!");
        int opcao;
       do {
             opcao = sc.nextInt();
            if (opcao == 1) {
                System.out.println("Digite um número para calcular a área do quadrado:");
                int a = sc.nextInt();
                int r = a * a;
                System.out.println("A área do quadrado de " + a + " é igual à " + r + "!");
            } else if (opcao == 2) {
                System.out.println("Digite o valor do raio do círculo para calcular a área (considere π = 3):");
                int b = sc.nextInt();
                int r = 3 * (b * b);
                System.out.println("A área do círculo com raio " + b + " é " + r + "!");
            } else {
                System.out.println("[ERRO] Digite apenas 1 ou 2:");
            }
        } while (opcao != 1 && opcao != 2);

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

        System.out.println("\n TABUADA");
        System.out.println("Digite um número para a tabuada;");
        int tabuada = sc.nextInt();
        int t = tabuada;
        //abaixo eu fiz a tabuada de uma forma que eu n precise escrever vários "souts", como tabela sempre será tabela, então achei mais prático assim.
        System.out.println(t + " X 1 = " + t*1 + "\n" + t + " X 2 = "+t*2+ "\n" + t + " X 3 = " +t*3+ "\n" + t + " X 4 = "+ t*4+ "\n" + t + " X 5 = "+t*5 + "\n"+ t + " X 6 = " + t*6 + "\n"+ t+ " X 7 = "+ t*7 + "\n" + t + " X 8 = " + t*8 + "\n" + t + " X 9 = "+ t*9 + "\n" + t + " X 10 = " + t*10 + "\n" );

        //Crie um programa que solicite ao usuário a entrada de um número inteiro. Verifique
        // se o número é par ou ímpar e exiba uma mensagem correspondente.
        System.out.println("\n PAR OU ÍMPAR");
        System.out.println("Digite um número inteiro:");
        int p = sc.nextInt();
        int r = p % 2;

            if (r == 0) {
                System.out.println(p + " é par!");
            } else {
                System.out.println(p + " é impar!");
            }

            // Crie um programa que solicite ao usuário um número e calcule o fatorial desse número.
            // estudar funcao recursiva
        System.out.println("\n ** FATORIAL **");
        System.out.println("Digite um número (de 1 a 12)");
           int n = sc.nextInt();
           int resultado = fatorialRecursivo(n);
        System.out.println("O fatorial de " + n + " é " + resultado);
     
        }

    }
1 resposta

Oi, Débora! Tudo bem?

A sua atividade Desafio: hora da prática ficou bem completa e mostra que você praticou vários pontos importantes do curso Java: criando a sua primeira aplicação, como Scanner, condicionais, laços do while, operadores e métodos.

Você organizou bem os exercícios em sequência e mostrou iniciativa ao usar uma função recursiva para calcular o fatorial, o que é um ótimo avanço. Uma dica é usar um laço for na parte da tabuada, assim você evita repetir várias multiplicações no mesmo System.out.println e deixa o código mais fácil de manter; por exemplo, for (int i = 1; i <= 10; i++) { System.out.println(tabuada + " X " + i + " = " + tabuada * i); }.

Também vale validar o fatorial para aceitar apenas números de 1 a 12, como você indicou na mensagem, evitando entradas fora desse intervalo.

Qual desses exercícios você sentiu que mais ajudou a entender o controle de fluxo em Java?

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