Tenho várias contas instanciadas e inseridas dentro de um objeto do tipo Banco, quero passar como parametro o numero de determinada conta e o metodo deverá retornar a referencia para esta conta. Ocorre o seguinte erro, ou seja, o retorno está errado "/
Certamente, tenho algumas contas instanciadas assim:
contas[0]contas[1]contas[2]
e dentro delas estão os objetos do tipo conta…
M
markin1
com apenas esse trecho de código, pelo menos pra mim, fica difícil ajudar a resolver o problema. Não pode postar o restante?
felipeaqueiroz
Acho que você não inicializou a variável i.
Ela recebe o que?
Talvez fosse Conta pegaConta(int numeroDaContaQueDesejoSelecionar) {
int i = numeroDaContaQueDesejoSelecionar;
//aqui dentro realiza-se o processamento
return contas[i];
}
gRoOve
Sem problemas, segue o código completo:
classConta{//Atributos protecteddoublesaldo;//MetodosdoublegetSaldo(){returnthis.saldo;}voiddeposita(doublevalor){this.saldo+=valor;}voidsaca(doublevalor){this.saldo-=valor;}voidatualiza(doubletaxa){this.saldo+=this.saldo*taxa;}}classContaCorrenteextendsConta{voidatualiza(doubletaxa){super.atualiza(taxa*2);}voiddeposita(doublevalor){this.saldo+=valor-0.10;}}classContaPoupancaextendsConta{voidatualiza(doubletaxa){super.atualiza(taxa*3);}}classAtualizadorDeContas{privatedoublesaldoTotal=0;privatedoubleselic;AtualizadorDeContas(doubleselicTemp){this.selic=selicTemp;}voidroda(Contac){System.out.println("Tipo da conta: "+c);System.out.println("Saldo anterior: "+c.getSaldo());//Mostrando saldoc.atualiza(selic);//Atualizando a contaSystem.out.println("Saldo atual: "+c.getSaldo()+"\n");this.saldoTotal+=c.getSaldo();}doublegetSaldoTotal(){returnthis.saldoTotal;}}classBanco{Conta[]contas;booleanadiciona(Contac){for(inti=0;i<contas.length;i++){if(contas[i]==null){contas[i]=c;returntrue;}}returnfalse;}ContapegaConta(intx){for(inti=0;i<contas.length;i++){if(i==x){returncontas[i];}}}intpegaTotalDeContas(){intcontadorDeContas=0;for(inti=0;i<contas.length;i++){if(contas[i]!=null){contadorDeContas++;}}returncontadorDeContas;}}classExercicioHerencaPolimorfismo{publicstaticvoidmain(String[]args){Bancobb=newBanco();//Criando objeto Bancobb.contas=newConta[10];//Abrindo array para contas para o BancoContaCorrente[]cc=newContaCorrente[5];//Abrindo array para contacorrenteContaPoupanca[]cp=newContaPoupanca[5];//Abrindo array para contapoupancaAtualizadorDeContasadc=newAtualizadorDeContas(0.01);for(inti=0;i<cc.length;i++){cc[i]=newContaCorrente();//Instanciando novos objetos cc, um para cada posicao do array}for(inti=0;i<cp.length;i++){cp[i]=newContaPoupanca();//Instanciando novos objetos cp um para cada posicao do array}for(inti=0;i<(bb.contas.length/2);i++){bb.adiciona(cc[i]);bb.adiciona(cp[i]);}bb.contas[0].deposita(1000);bb.contas[1].deposita(1000);bb.contas[2].deposita(1000);bb.contas[3].deposita(1000);bb.contas[4].deposita(1000);bb.contas[5].deposita(1000);for(inti=0;i<bb.contas.length;i++){adc.roda(bb.contas[i]);}}}
Funcionou. Talvez seja isso :)
Se você estiver pelo eclipse (ou outro IDE) quando aparacer aquele balaozinho de erro ao lado da linha, você clica lá e ele te dá algumas dicas e possíveis soluções
gRoOve
Estou usando o gedit por enquanto, vou passar o usar o eclipse daqui pra frente.
Cara, me chamou atenção em uma coisa agora, esses tempos fiz um método com retorno tipo boolean, e se eu colocasse somente um return true, não compilava…tinha que colocar o return false…sabe pq isso??
Parece a mesma situação que ocorreu aqui, obrigado pela dica
M
markin1
esse return tava dentro de um if? ou qualquer outra condição lógica?
Se for isso, acontece porque o método tem que retornar alguma coisa independente de atender ou não a condição lógica, se retornar somente dentro da condição, se não atende-la não terá retorno, concorda?
gRoOve
Está explicado, hehe. Achei que o java se encarrega-se de retornar um null por exemplo, caso a condição não fosse satisfeita
Esclareceu minha dúvida markin1, grato.