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
nullcomo se fosse uma matriz.- Acessando ou modificando os slots
nullcomo se fosse uma matriz.- Lançando
nullcomo 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.