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

Qual código certo?

Como seria o código certo?? Não entendi essa parte.

public class TesteSalario {

    public static void main(String[] args) {

        boolean foiPromovido = true;

        if(foiPromovido) {
            double salario = 4200.0;
        } else {
            double salario = 3800.0;
        }

        System.out.println(salario);
    }
}
3 respostas
solução!

Oi Felipe, tudo bem?

Então, esse código está errado pois as variáveis foram declaradas dentro de um escopo de bloco. Lembrando que escopo de bloco é tudo que está dentro de um { }. Ou seja, quando declaramos a variável double salario = 4200.0; dentro da nossa condicional (if) ela só será vista dentro desse bloco de código, e não fora, por isso causa um erro, já que tentamos acessar essa variável fora do escopo em que ela foi declarada.

O correto seria:

public class TesteSalario {

    public static void main(String[] args) {

        boolean foiPromovido = true;

        double salario;

        if(foiPromovido) {
            salario = 4200.0;
        } else {
            salario = 3800.0;
        }

        System.out.println(salario);
    }
}

Veja que agora declaramos a variável salario fora do if, e apenas alteramos o seu valor, tornando-a visível em todo nosso código, portanto não teremos mais erros na hora de printar essa variável.

Espero ter ajudado, qualquer outra dúvida estou a disposição, abraços e bons estudos!

Giovana muito obrigado. Incrível a rapidez na solução da minha dúvida. Em nenhum outro curso que já paguei tive essa ajuda. Agora entendi.

Oque eu tinha ficado em dúvida também é porque as alternativas me confundiram um pouco, principalmente a A.

"(A) O código nem compila pois declaramos a variável salario duas vezes.

"Errado", a declaração das variáveis não é o problema pois cada uma foi declarada em seu bloco (seu escopo).

Essa resposta também não deveria ser verídica???

Então Felipe, isso com certeza não é uma boa prática, mas o código ele compila sim quando declaramos a variável duas vezes. Veja, se tirarmos o System.out.println(salario); (que é onde dá erro, pois a variável não está visível), ele compilará normalmente, e a alternativa diz que o código não compilará, por isso ela está errada!

No mais, fico muito feliz que tenha entendido, se tiver alguma dúvida é só me retornar aqui!