Code always falls on the same if

Asked

Viewed 103 times

-1

Why the method souVelho() only returns the answer "You’re new." regardless of the typed age? What’s going wrong?

public class Pessoa{
private int idade;  

public Pessoa(int idadeInicial) {
    if(idadeInicial<0){
        idade = 0;
        System.out.println("Idade invalida, idade determinada para 0.");
    }else{
        idadeInicial= idade;
    }
}

public void souVelho() {
    if(idade>=0 && idade<=12){
        System.out.println("Você é novo.");
    }
    else if(idade>=13 && idade<=17){
        System.out.println("Você é adolescente.");
    }
    else if(idade>=18){
        System.out.println("Você é velho.");
    }

}





    public void fazAniversario() {
        idade++;
    }
}

2 answers

8


The problem is the constructor line that is assigning the class attribute to the constructor variable when it should be the opposite.

The this in this case nothing has any use since there is no conflict of names, they would already take the property of the class anyway.

class Main {
    public static void main(String[] args) {
        Pessoa pessoa = new Pessoa(10);
        pessoa.souVelho();
        Pessoa pessoa2 = new Pessoa(15);
        pessoa2.souVelho();
        Pessoa pessoa3 = new Pessoa(20);
        pessoa3.souVelho();
        Pessoa pessoa4 = new Pessoa(-1);
        pessoa4.souVelho();
    }
}

class Pessoa {
    private int idade;  
    public Pessoa(int idadeInicial) {
        if (idadeInicial < 0) {
            idade = 0;
            System.out.println("Idade invalida, idade determinada para 0.");
        } else {
            idade = idadeInicial;
        }
    }
    public void souVelho() {
        System.out.println(idade);
        if (idade >= 0 && idade <= 12) System.out.println("Você é novo.");
        else if (idade >= 13 && idade <= 17) System.out.println("Você é adolescente.");
        else if (idade >= 18) System.out.println("Você é velho.");
    }
    public void fazAniversario() {
        idade++;
    }
}

Behold working in the ideone. And in the repl it.. Also put on the Github for future reference.

0

After I realized I wrote idadeInicial= idade; when it should be

idade = idadeInicial; 

I ended up reversing without realizing, and breaking myself thinking that there was something wrong with us if.

  • Yes, I ended up answering since the accepted answer does not really solve the problem and I wanted to make it clear, it’s bad for people to think that’s what solved.

  • I think it’s fair the autor withdraw acceptance, and put in the correct.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.