public ContaBancaria procurarConta(int numConta){
for(int i=0; i<5; i++){
if(cb[i].getNumeroConta() == numConta){
return cb[i];
}
}
return null;
}
public static void main(String[] args) {
int numeroConta=123;
if (banco.procurarConta(numeroConta) == null) {
System.out.println("Conta inexistente");
} else {
System.out.println("Conta existente");
}
}
Melhorando a legibilidade:
public ContaBancaria procurarConta(int numConta){
for(int i = 0; i < 5; i++){
if(cb[i].getNumeroConta() == numConta){
return cb[i];
}
}
return null;
}
public static void main(String[] args){
int numeroConta = 123;
if (banco.procurarConta(numeroConta) == null){
System.out.println("Conta inexistente");
}else{
System.out.println(“Conta existente”);
}
}
Se o teste if(cb[i].getNumeroConta() == numConta)
falhar, o retorno será null
. O método espera o retorno desse método, está recebendo null
. Deve ter em mente que o return dentro do laço (for) apenas finaliza o for
, e não o método.
Creio que assim resolva:
public ContaBancaria procurarConta(int numConta){
ContaBancaria contaEncontrada = null;
int flag = 5;
for(int i = 0; i < flag; i++){
if(cb[i].getNumeroConta() == numConta){
contaEncontrada = cb[i];
flag = 0;
}
}
return contaEncontrada;
}
public static void main(String[] args){
int numeroConta = 123;
if (banco.procurarConta(numeroConta) == null){
System.out.println("Conta inexistente");
}else{
System.out.println(“Conta existente”);
}
}
Você também pode usar o return
para finalizar o laço depois da atribuição no lugar da flag.
Entendi as suas explicações mas no exercicio em questao é pedido que retorne null caso nao seja encontrada a conta.
Este Array cb
tem os cinco elementos válidos que você precisa?
Onde está o restante da classe e a stack trace do erro?
Mas o método que espera o resultado desse método está ‘preparado’ para lidar com o null
? De acordo com a documentação (Docs Oracle - NullPointerException):
Lançado quando um aplicativo tenta usar um caso nulo em um objeto necessário. Esses requisitos são:
- Comando ou método de instância de um objeto
null
.- Acessando ou modificando o campo de um elemento
null
.- Tomando o comprimento de
null
como se fosse uma matriz.- Acessando ou modificando os slots
null
como se fosse uma matriz.- Lançando
null
como se fosse um valorThrowable
.
array cb declarado:
ContaBancaria cb []= new ContaBancaria[5];
Stacktrace
Exception in thread “main” java.lang.NullPointerException at exerciciopratico.Banco.procurarConta(Banco.java:28) at exerciciopratico.Menu.main(Menu.java:53) /home/eu/.cache/netbeans/8.2/executor-snippets/run.xml:53: Java returned: 1 BUILD FAILED (total time: 33 seconds)
Onde é definido o valor do getNumeroConta? pois não estou vendo nenhum setter pra ele
Você está equivocado!
A instrução return
sempre finaliza o método, então é mais otimizado do que setar uma flag dentro do laço.
O NullPointerException
está acontecendo pelo fato de o elemento cb[i]
estar null
.
Só dá pra chamar o método getNumeroConta()
em referências diferente de null
.