Bom, estou fazendo um exercício proposto na aula 5a do curso de POO do curso em vídeo.Trata-se de sistema para criar e gerenciar uma conta bancária.Estou tentando criar o método abaixo fazendo com que o processo seja repetido até que o atributo this.tipo tenha um dos valores desejados ( “cc” ou "cp) , o meu problema é que o processo está se repetindo sem parar e não consigo identificar o erro na condição do while.
publicvoidabrirConta(){if(this.status==false){while((this.tipo!=cc)&(this.tipo!=cp)){System.out.println("Deseja abrir como conta corrente[cc] ou conta poupança[cp]: ");this.tipo=leitor.nextLine();
if(this.tipo!="cc"&this.tipo!="cp"){
System.out.println("O tipo de conta digitado não é válido \n Tente Novamente. ");}
}
status=true;}else{
System.out.println("Não foi possível realizar o procedimento. \n A conta já está aberta!");}
}
Não né, são Strings, então deve testar como Strings.
N
Nicolau
então, eu tentei de duas formas e as duas deram errado.
A primeira forma foi: while ((this.tipo != “cc”) & (this.tipo!= “cp”))
E a segunda forma eu criei uma variável com tais valores:
Stringcc=“cc”;Stringcp=" cp";…
while ((this.tipo != cc) & (this.tipo!= cp))
E nenhum dos jeitos deu certo.
I
Iohannes1 like
Assim não funciona?
publicvoidabrirConta(){if(this.status==false){while(!(this.tipo).equals("cc")&(!(this.tipo).equals("cp"))){System.out.println("Deseja abrir como conta corrente[cc] ou conta poupança[cp]: ");this.tipo=leitor.next();if(this.tipo!="cc"&this.tipo!="cp"){System.out.println("O tipo de conta digitado não é válido \n Tente Novamente. ");}status=true;}}elseSystem.out.println("Não foi possível realizar o procedimento. \n A conta já está aberta!");}
N
Nicolau
Sempre que tento usar o .equals me aparece esse erro:
Exception in thread “main” java.lang.NullPointerExceptionat bancos.ContaBancos.abrirConta(ContaBancos.java:25)at bancos.Bancos.main(Bancos.java:9)C:\Users\eolui\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
Inclusive quando copiei o seu código .
I
Solucao aceita
Iohannes1 like
Isso acontece porque tipo deve ter sido inicializado como null. Eu fiz um teste aqui e funcionou:
publicclassTeste{privatebooleanstatus=false;privateStringtipo="";privatejava.util.Scannerleitor=newjava.util.Scanner(System.in);publicvoidabrirConta(){if(this.status==false){while(!(this.tipo).equals("cc")&!(this.tipo).equals("cp")){System.out.print("Deseja abrir como conta corrente[cc] ou conta poupança[cp]: ");this.tipo=leitor.next();if(!(this.tipo).equals("cc")&!(this.tipo).equals("cp")){System.out.println("O tipo de conta digitado não é válido. Tente Novamente.");}this.status=true;}}elseSystem.out.println("Não foi possível realizar o procedimento.\nA conta já está aberta!");}publicstaticvoidmain(String[]args){Testeteste=newTeste();teste.abrirConta();}}
Rodando…
N
Nicolau
Foi exatamente isso mesmo, inicializei da forma certa e funcionou.Muito obrigado moço!
I
Iohannes1 like
Moça? Está me estranhando piá?
N
Nicolau
Pensei que fosse kk, o nome é muito parecido com de uma conhecida minha, perdão.