Estrutura While, bug na condição- JAVA

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…

image

1 curtida

Foi exatamente isso mesmo, inicializei da forma certa e funcionou.Muito obrigado moço!

Moça? Está me estranhando piá? :angry:

1 curtida

Pensei que fosse kk, o nome é muito parecido com de uma conhecida minha, perdão.

Pensou errado… Então arrume lá!

Se acalme, já arrumei.