1
resposta

Exercício 2 - Variáveis e Tipos

package VariaveiseETipos;

import java.util.Scanner;

public class Exercicio2 {
    public static void main (String[] args){
        double valorProduto;
        int valorProdutoInteiro;

        Scanner leitura = new Scanner(System.in);

        System.out.println("Insira o valor do produto: ");
        valorProduto = leitura.nextDouble();

        valorProdutoInteiro =  (int) valorProduto;

        System.out.println("O valor inteiro do produto é: " + valorProdutoInteiro);
    }
}
1 resposta

Olá, Isabelle. Como vai?

Excelente resolução! Você aplicou de forma precisa o conceito de Casting (ou conversão explícita) em Java.

Essa técnica é fundamental quando precisamos transformar um tipo de dado mais "amplo" (como o double, que aceita casas decimais) em um tipo mais "estreito" (como o int, que armazena apenas números inteiros).

Por que o seu código está correto?

O Java, por ser uma linguagem fortemente tipada e segura, não permite que você atribua um double a um int diretamente, pois haveria perda de informação (as casas decimais seriam descartadas). Ao escrever (int) valorProduto, você está dizendo ao compilador: "Eu sei que vou perder a precisão decimal e assumo a responsabilidade por isso".

Pontos Técnicos Interessantes:

  • Truncamento: É importante lembrar que o casting para int não arredonda o número; ele apenas trunca (corta) a parte decimal. Se o usuário digitar 9.99, o resultado será 9, e não 10.
  • Hierarquia de Tipos: O double ocupa 64 bits de memória, enquanto o int ocupa 32 bits. Por isso, a conversão de double para int é chamada de Narrowing Primitive Conversion (Conversão Estreita).

Uma Dica de Prática:

Para tornar seu programa ainda mais interessante, você poderia tentar usar a classe Math para ver a diferença entre o Casting e o Arredondamento:

// Arredonda para o inteiro mais próximo antes de converter
valorProdutoInteiro = (int) Math.round(valorProduto); 

Você sentiu alguma dificuldade em entender por que o Java exige esse (int) entre parênteses em vez de fazer a conversão automaticamente?

Espero que possa ter lhe ajudado!