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!