Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: Definição de métodos

Suponha que você esteja trabalhando em uma aplicação Java de uma loja, que tenha a seguinte classe:

public class Produto {

    String nome;
    double preco;
    double descontoParaPix;

    double pegaPrecoFinal(boolean pagamentoViaPix) {
        if (pagamentoViaPix == true) {
            double precoFinal = preco - descontoParaPix;
        } else {
            double precoFinal = preco;
        }
    }

}

O método pegaPrecoFinal realiza o cálculo do preço final do produto, levando em consideração se o pagamento será realizado via pix. No entanto, esse método foi definido de maneira incorreta.

Qual o problema do método pegaPrecoFinal?

O método foi iniciado errado, a variável precoFinal só existe dentro do bloco if, else e não retorna nada, Versão correta para o código:

public class produto {
    String nome;
    double preco;
    double descontoParaPix;

    double pegaPrecoFinal(boolean pagamentoViaPix) {
        double precoFinal;
        if (pagamentoViaPix == true) {
            precoFinal = preco - descontoParaPix;
        } else {
             precoFinal = preco;
        }
        return precoFinal;
    }
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oii Jean!

Parabéns por identificar o problema principal no método e por propor uma solução! Você demonstrou compreensão sobre um conceito fundamental em Java: o escopo de variáveis.

Análise do problema original:
Você está absolutamente correto ao apontar que a variável precoFinal estava sendo declarada dentro dos blocos if e else, o que significa que ela deixava de existir assim que saíamos desses blocos. Isso tornava impossível retornar o valor calculado, resultando em um erro de compilação.

Sobre sua solução:
Sua versão corrigida resolve muito bem o problema de escopo ao declarar a variável precoFinal no início do método, antes das estruturas condicionais. Isso garante que a variável esteja acessível em todo o método e possa ser retornada ao final.

Lembre-se que em Java, por convenção, nomes de classes devem iniciar com letra maiúscula. Portanto, public class Produto (com "P" maiúsculo) seria o mais apropriado.

Você está no caminho certo. Continue praticando e aprofundando seus conhecimentos em orientação a objetos. Cada desafio superado é um passo importante na sua jornada de aprendizado em programação Java.

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