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

Mesmo no código correto, pq o "foiPromovido" compilou?

No vídeo da aula anterior, quando falamos sobre inicializar a variável booleana para todas as possibilidades, tivemos um erro quando "acompanhado" não foi inicializado em "false", no bloco do else. No caso deste exercício, mesmo quando corrigimos o código declarando "salario" fora dos blocos if e else, deduzi que ainda iria existir um erro, por conta do "foiPromovido" só ter sido inicializado com "true", mas ele funcionou normalmente. Pq isso está acontecendo? Vou deixar o meu código de exemplo da aula anterior, o qual contém o erro que esperava que acontecesse aqui também:

public class TestaEscopo {

    public static void main(String[] args) {

        int idade = 20;
        int quantidadePessoas = 3;
        boolean acompanhado;

        if (quantidadePessoas >= 2) {
            acompanhado = true;

        } // else {
            // acompanhado = false;

        //}

        System.out.println(acompanhado); // <- ERRO

            }
    }
3 respostas

Natália, não é uma boa pratica de programação criar váriaveis do tipo boolean sem inicializar as mesmas, pois desta forma o compilador pode tomar decisões que não é a que esperamos.

solução!

Olá, Natália

Analisei seu código e o motivo dele está apontando o seguinte erro quando executado:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The local variable acompanhado may not have been initialized

    at br.com.alura.ajuda1.ajuda2.main(ajuda2.java:19)

Isso se deve porque no seu código a váriavel "acompanhado", em sua linha 9, não teve um valor atribuído, ja que por default você precisa atribuir sempre um valor para variaveis do tipo booleano antes de utiliza-los. Você não precisa criar o bloco "else", já que o objetivo do seu algoritmo no final das contas é mostrar se a quantidade de pessoas é maior que 2 e que a atribuição do valor da variavel "acompanhado" está sendo atribuido no inicio do código e não mais no "else" dele.

Desta forma seu código ficaria assim:

public class ajuda2 {

    public static void main(String[] args) {

        int idade = 20;
        int quantidadePessoas = 3;
        boolean acompanhado = false;

        if (quantidadePessoas >= 2) {
            acompanhado = true;

        }

        System.out.println(acompanhado); // :D funcionou

    }
}    

Espero que tenha ajudado, em algo, mas caso a duvida persista, não exite em perguntar aqui ou no nosso canal no Discord (geralmente sempre tem gente em call para ajudar).

Se este tópico te ajudou, não esqueça de marcar a resposta como certa para tópico ser finalizado e poder ajudar mais pessoas da comunidade e você ganhar mais pontos ^^ .

Bons estudos!

Att,

Obrigada pessoal!! <3