Oie Thomas, tudo bem contigo?
Isso aconteceu devido ao uso do this
na condicional dentro do if
. Sempre que usamos o this
estamos nos referindo a classe, então quando você fez dessa forma if(this.agencia >= 0 && this.agencia <= 500)
a agência que está sendo usada nos dois casos não é a que entrou como argumento do método setAgencia
e sim o atributo da classe Conta
, que por padrão se não tiver sido "populado" ele terá o valor 0.
Faça o seguinte teste:
Na classe de teste, sem alterar o código da classe "Conta", coloque o seguinte código:
conta.setAgencia(5555);
System.out.println(conta.getAgencia());
conta.setAgencia(100);
System.out.println(conta.getAgencia());
Perceba que o primeiro conta.setAgencia(5555)
funcionou, agora o segundo não. E isso aconteceu, pois como eu disse acima, quem está sendo usado para fazer a condição é o atributo da classe "Conta". Por isso, quando o atributo passou a valer 5555 após o primeiro método, quando o segundo método tenta trocar o valor para 100, ele não consegue, já que a condição cai no bloco "else" por conta do atributo ter o valor acima de 500.
Para arrumarmos isso, é simples, na classe "Conta" faça a seguinte alteração:
public void setAgencia(int agencia){
if(agencia >= 0 && agencia <= 500) { // sem o this na condional
this.agencia = agencia;
} else {
System.out.println("Número de agência inválido");
}
}
Espero ter ajudado!
Se tiver qualquer outra dúvida estarei por aqui :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!