Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio: hora da prática

Código:

public class Main {
    public static void main(String[] args) {
        System.out.println("1 - Crie um programa que realize a média de duas notas decimais e exiba o resultado.");
        double notaA = 8.5;
        double notaB = 6.7;
        double media = (notaA + notaB) / 2;
        System.out.println("Media de: " + notaA + " + " + notaB + " = " + media);
        System.out.println();

        String exercicio2 = """
                2 - Declare uma variável do tipo double e uma variável do tipo int.
                  - Faça o casting da variável double para int e imprima o resultado.
                """;
        System.out.print(exercicio2);
        double numeroA = 15.6;
        int castingToInt = (int) numeroA;
        System.out.println(numeroA + " casting to int " + castingToInt);
        System.out.println();

        String exercicio3 = """
                3 - Declare uma variável do tipo char (letra) e uma variável do tipo String (palavra).
                  - Atribua valores a essas variáveis e concatene-as em uma mensagem.
                """;
        System.out.print(exercicio3);
        char letra = 'A';
        String palavra = "lura";
        System.out.println("Letra A" + " + " + palavra + " = " + letra + palavra);
        System.out.println();

        String exercicio4 = """
                4 - Declare uma variável do tipo double precoProduto e uma variável do tipo int (quantidade). 
                  - Calcule o valor total multiplicando o preço do produto pela quantidade e apresente o resultado em uma mensagem.
                """;
        System.out.println(exercicio4);
        double precoProduto = 76.53;
        int quantidade = 176;
        System.out.println("Valor total: R$" + precoProduto * quantidade);
        System.out.println();

        String exercicio5 = """
                5 - Declare uma variável do tipo double valorEmDolares. Atribua um valor em dólares a essa variável.
                  - Considere que o valor de 1 dólar é equivalente a 4.94 reais. Realize a conversão do valor em dólares
                    para reais e imprima o resultado formatado.
                """;
        System.out.print(exercicio5);
        double valorEmDolares = 556.30;
        double cotacaoDolar = 4.94;
        double valorEmReais = valorEmDolares * cotacaoDolar;
        System.out.printf("%.2f dólares em reais: R$ %.2f", valorEmDolares, valorEmReais);
        System.out.println();
        System.out.println();

        String exercicio6 = """
                6 - Declare uma variável do tipo double precoOriginal. Atribua um valor em reais a essa variável,
                      representando o preço original de um produto. Em seguida, declare uma variável do tipo double
                      percentualDesconto e atribua um valor percentual de desconto ao produto (por exemplo, 10 para 10%).
                  - Calcule o valor do desconto em reais, aplique-o ao preço original e imprima o novo preço com desconto.
                """;
        System.out.println(exercicio6);
        double precoOriginal = 16.99;
        double percentualDesconto = 5;
        double valorComDesconto = precoOriginal * (percentualDesconto / 100);
        double precoFinal = precoOriginal - valorComDesconto;
        System.out.printf("Preço original: R$ %.2f%n", precoOriginal);
        System.out.printf("Valor do desconto: R$ %.2f%n", valorComDesconto);
        System.out.printf("Preço final: R$ %.2f%n", precoFinal);
    }
}

2 respostas
solução!

Olá, Thiago! Tudo bem?

Parabéns pela excelente resolução! Você demonstrou um domínio muito bom dos conceitos iniciais de Java, especialmente na manipulação de tipos primitivos, casting e formatação de saída.

Aqui estão alguns pontos de destaque sobre o seu código:

Análise Técnica das Resoluções

  • Casting (Exercício 2): Você realizou corretamente o casting explícito de double para int. É importante lembrar que, nesse processo, o Java não arredonda o número, mas sim "trunca" a parte decimal (o $15.6$ vira $15$).
  • Manipulação de Tipos (Exercício 3): A concatenação entre char e String foi feita de forma precisa. No Java, quando somamos um char a uma String, o resultado é sempre uma nova String.
  • Formatação com printf (Exercícios 5 e 6): O uso do System.out.printf foi o ponto alto! Usar o especificador %.2f é a melhor prática para exibir valores monetários, garantindo que o usuário veja apenas duas casas decimais, o que torna o programa muito mais profissional.
  • Text Blocks: Parabéns por utilizar as aspas triplas ("""). Esse recurso (introduzido em versões mais recentes do Java) facilita muito a leitura de textos longos e enunciados dentro do código.

Entendendo o Casting na Memória

Para ajudar na visualização do que aconteceu no seu exercício 2, imagine que o Java trata cada tipo de variável com um "tamanho" de caixa diferente:

Quando você faz um casting de double (64 bits) para int (32 bits), você está forçando um valor de uma "caixa maior" para uma "caixa menor". Por isso, a perda da parte decimal é inevitável.


Dica de Refatoração (Clean Code)

No Exercício 4, você realizou o cálculo diretamente dentro do println. Em sistemas maiores, uma boa prática é armazenar o resultado em uma variável antes de imprimir:

double valorTotal = precoProduto * quantidade;
System.out.println("Valor total: R$" + valorTotal);

Isso facilita se, futuramente, você precisar aplicar um imposto ou desconto sobre esse valorTotal antes de mostrá-lo ao usuário.

Thiago, você teve alguma dúvida específica sobre quando usar double ou float para lidar com preços, ou a escolha do double foi tranquila para você?

Oi Evandro! Tudo bem e por ai?

Muito obrigado pelas explicações, vou aplicar os ajustes aqui no projeto! Sobre o float x double, a escolha foi tranquila, por conveniência acabei usando o double mas dei uma lida em um material aqui e uma outra opção para valores financeiros foi o bigDecimal, seria o ideial para esses casos?