Código Java para Desenhar uma Ampulheta

Este artigo tem como objetivo explicar o funcionamento do código Java fornecido, que desenha uma ampulheta de asteriscos (*) a partir de um número ímpar fornecido pelo usuário.

1. Importação da Classe Scanner

import java.util.Scanner;

O programa utiliza a classe Scanner para receber a entrada do usuário. Essa classe permite a leitura de dados digitados no console.

2. Estrutura Principal do Programa

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

O programa inicia definindo a classe Main e o método principal main, onde a execução do programa começa. Um objeto da classe Scanner é criado para capturar a entrada do usuário.

3. Entrada do Usuário

System.out.print("Digite um número ímpar: ");
int n = scanner.nextInt();

O programa solicita ao usuário que insira um número ímpar, armazenando esse valor na variável n.

4. Validação do Número

if (n % 2 == 0) {
    System.out.println("Por favor, insira um número ímpar.");
} else {
    desenharAmpulheta(n);
}

Aqui, o programa verifica se o número inserido é ímpar. Se for par, uma mensagem de erro é exibida. Caso contrário, a função desenharAmpulheta(n) é chamada.

5. Fechamento do Scanner

scanner.close();

Por questões de boas práticas, o scanner é fechado após o uso para liberar recursos.

6. Função para Desenhar a Ampulheta

A função desenharAmpulheta(int n) é responsável por exibir o padrão da ampulheta no console.

6.1 Declaração e Laço para a Parte Superior da Ampulheta

int espacos = 0;
for (int i = n; i >= 0; i--) {

Inicialmente, a variável espacos é definida como 0. Em seguida, um laço for decremente i de n até 0, controlando as linhas da parte superior da ampulheta.

6.2 Impressão dos Espaços

for (int j = 0; j < espacos; j++) {
    System.out.print(" ");
}

Esse laço for imprime os espaços iniciais antes dos asteriscos, deslocando a impressão para a direita conforme o loop avança.

6.3 Impressão dos Asteriscos

for (int j = 0; j < 2 * i + 1; j++) {
    System.out.print("*");
}
System.out.println();
espacos++;

Aqui, é gerada uma quantidade de asteriscos proporcional a 2 * i + 1, formando a parte superior da ampulheta. A cada linha, espacos é incrementado para ajustar o deslocamento.

6.4 Impressão da Parte Inferior

espacos = n;
for (int i = 0; i <= n; i++) {

Agora, a variável espacos é redefinida para n e outro laço for é iniciado para gerar a parte inferior da ampulheta.

6.5 Impressão dos Espaços e Asteriscos

for (int j = 0; j < espacos; j++) {
    System.out.print(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
    System.out.print("*");
}
System.out.println();
espacos--;

Semelhante à parte superior, a cada iteração os espaços diminuem e a quantidade de asteriscos aumenta, criando o formato característico da ampulheta.

6.6 Código para Testa

import java.util.Scanner;

 

public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

 

        

        System.out.print(“Digite um número ímpar: “);

        int n = scanner.nextInt();

 

        

        if (n % 2 == 0) {

            System.out.println(“Por favor, insira um número ímpar.”);

        } else {

           

            desenharAmpulheta(n);

        }

 

        scanner.close();

    }

 

    public static void desenharAmpulheta(int n) {

        int espacos = 0;

 

        for (int i = n; i >= 0; i–) {

            for (int j = 0; j < espacos; j++) {

                System.out.print(” “);

            }

            for (int j = 0; j < 2 * i + 1; j++) {

                System.out.print(“*”);

            }

            System.out.println();

            espacos++;

        }

 

        espacos = n; 

 

        for (int i = 0; i <= n; i++) {

            for (int j = 0; j < espacos; j++) {

                System.out.print(” “);

            }

            for (int j = 0; j < 2 * i + 1; j++) {

                System.out.print(“*”);

            }

            System.out.println();

            espacos–;

        }

    }

}

7. Exemplo de Saída

Se o usuário inserir 5, a saída será:

***********
 *********
  *******
   *****
    ***
     *
    ***
   *****
  *******
 *********
***********

Dessa forma, o programa gera uma ampulheta simétrica de asteriscos baseada no número inserido pelo usuário.

Conclusão

Este código demonstra conceitos essenciais de Java, incluindo entrada de dados, estrutura de controle e laços de repetição. A lógica utilizada para criar a ampulheta é um ótimo exercício para o entendimento de manipulação de saída no console.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *