Duvida em Switch Case JAVA

Olá pessoal.
Minha dúvida é o seguinte:

Eu tenho um case dentro do switch, que quando eu entro nele pede a entrada de dados, só que quando vai entrar pra parte lógica, no caso um “if”, ele simplesmente passa pro próximo case que tem no switch.

O que será que pode estar acontecendo?

Assim que termina a lógica do case tem que colocar break;

Exemplo

switch(teste){
case 1:
System.out.println(“teste”);
break;

case 2:
System.out.println(“teste2”);
break;

    switch(opcao){
            case 1:
                System.out.println("");
                System.out.println("Seu saldo é: " + saldo);
                                                     
                opcaoDesejada();
                
            case 2:
                System.out.println("");
                System.out.println("Digite o valor a ser depositado: ");
                deposito = ler.nextDouble();
                saldo +=  deposito;
                System.out.println("");
                System.out.println("Seu saldo novo é: " + saldo);
                
                ex = "+ " + deposito;
                exOperacoes.append(ex);
                exOperacoes.append(System.getProperty("line.separator"));
                
                opcaoDesejada();
            
            case 3:
                System.out.println("");
                System.out.println("Digite o valor a ser sacado: ");
                saque = ler.nextDouble();
                saldo -=  saque;
                System.out.println("");
                System.out.println("Seu saldo novo é: " + saldo);
                
                ex = "- " + saque;
                exOperacoes.append(ex);
                exOperacoes.append(System.getProperty("line.separator"));
                
                opcaoDesejada();
                
            case 4:
                
                System.out.println("Digite o Valor: ");
                transf = ler.nextDouble();
                
                System.out.println("Digite a Conta: ");
                String userCONTA = ler.next();
                
                
                
                    if(userCONTA.equals(conta)){

                        saldo -= transf;
                        ex = "TRANSFERENCIA: - " + transf;

                    } else {
                        System.out.println("Algum dos dados digitados "
                                + "estão incorretos ou o valor da transferencia"
                                + "é maior que o saldo");
                    }
                    
                
                
            case 5: 
                System.out.println("Seu extrato é: ");
                System.out.print(exOperacoes);
                
                opcaoDesejada(); 
                
            case 0:
                
                inicio();
                            
            default:
                System.out.println("Tecla Incorreta");
                opcoes();
                System.out.println("");
           }

O que acontece, é que quando ele vai pra entrar no if do case 4, ele nao entra e vai pro proximo case. Eu tentei usar os breaks, tb deu na mesma

Você tem que colocar o break em todos os seus cases, se não ele irá automaticamente executar os swits abaixo da escolha.

Referente ah não entrar no IF possivelmente o seu objeto tem um valor string diferente por exemplo.

userConta = “Teste”
conta = “teste”

ao fazer a comparação ele identifica que não é igual, tenta fazer com equalsIgnoreCase.

E mais uma coisa como não tenho acesso ao código inteiro esse “conta” é um objeto ou uma variavel? Pois se for um objeto você deverá chamar o método get da variavel que você quer comparar da classe.

é uma variável

tem como me chamar no whats?

Deve ter colocado nos locais errados.

    switch(opcao){
            case 1:
                System.out.println("");
                System.out.println("Seu saldo é: " + saldo);
                                                     
                opcaoDesejada();
                break;

            case 2:
                System.out.println("");
                System.out.println("Digite o valor a ser depositado: ");
                deposito = ler.nextDouble();
                saldo +=  deposito;
                System.out.println("");
                System.out.println("Seu saldo novo é: " + saldo);
                
                ex = "+ " + deposito;
                exOperacoes.append(ex);
                exOperacoes.append(System.getProperty("line.separator"));
                
                opcaoDesejada();
                break;

            case 3:
                System.out.println("");
                System.out.println("Digite o valor a ser sacado: ");
                saque = ler.nextDouble();
                saldo -=  saque;
                System.out.println("");
                System.out.println("Seu saldo novo é: " + saldo);
                
                ex = "- " + saque;
                exOperacoes.append(ex);
                exOperacoes.append(System.getProperty("line.separator"));
                
                opcaoDesejada();
                break;

            case 4:
                
                System.out.println("Digite o Valor: ");
                transf = ler.nextDouble();
                
                System.out.println("Digite a Conta: ");
                String userCONTA = ler.next();
                
                
                
                    if(userCONTA.equals(conta)){

                        saldo -= transf;
                        ex = "TRANSFERENCIA: - " + transf;

                    } else {
                        System.out.println("Algum dos dados digitados "
                                + "estão incorretos ou o valor da transferencia"
                                + "é maior que o saldo");
                    }
                    break;

            case 5: 
                System.out.println("Seu extrato é: ");
                System.out.print(exOperacoes);
                
                opcaoDesejada(); 
                break;

            case 0:
                
                inicio();
                break;

            default:
                System.out.println("Tecla Incorreta");
                opcoes();
                System.out.println("");
                break;
           }