Code always falls in the same if

-1

Why is the "old ()" method only returns the "Are you new" answer, regardless of the age you entered? What is 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++;
}

}

    
asked by anonymous 23.08.2017 / 04:51

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 is of no use since there is no name conflict, they would already take ownership of the class anyway.

class Ideone {
    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++;
    }
}

See running on ideone . And no Coding Ground . Also I placed in GitHub for future reference .

    
23.08.2017 / 13:29
0

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

idade = idadeInicial; 

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

    
23.08.2017 / 05:27