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.
public void abrirConta (){
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!");
}
}
cc
e cp
são variáveis no while
?
Não né, são Strings, então deve testar como Strings.
1 curtida
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:
String cc= “cc”;
String cp =" cp";
…
while ((this.tipo != cc) & (this.tipo!= cp))
E nenhum dos jeitos deu certo.
Assim não funciona?
public void abrirConta (){
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;
}
}else
System.out.println("Não foi possível realizar o procedimento. \n A conta já está aberta!");
}
1 curtida
Sempre que tento usar o .equals me aparece esse erro:
Exception in thread “main” java.lang.NullPointerException
at 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 .
Isso acontece porque tipo
deve ter sido inicializado como null
. Eu fiz um teste aqui e funcionou:
public class Teste {
private boolean status = false;
private String tipo = "";
private java.util.Scanner leitor = new java.util.Scanner(System.in);
public void abrirConta (){
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;
}
}else
System.out.println("Não foi possível realizar o procedimento.\nA conta já está aberta!");
}
public static void main(String[] args){
Teste teste = new Teste();
teste.abrirConta();
}
}
Rodando…

1 curtida
Foi exatamente isso mesmo, inicializei da forma certa e funcionou.Muito obrigado moço!
Moça? Está me estranhando piá? 
1 curtida
Pensei que fosse kk, o nome é muito parecido com de uma conhecida minha, perdão.
Pensou errado… Então arrume lá!