Ajuda nesse desafio por favor

// DA ERRO NO ARRAYLIST, NO CASO NÃO FUNCIONA A TELA DE CADASTRO.

import java.util.Scanner;
import java.util.ArrayList;

public class Teste {

public static void main(String[] args) {
    // TODO code application logic here
    Scanner in = new Scanner(System.in);
   String aux;
   int opcao, numero,numero2;
   double valor;
   ArrayList<Conta> lc = new ArrayList ();
   Conta c1, c2;
   
   do {
       System.out.println("");
       System.out.println("--PAINEL--");
       System.out.println("1) Criar Conta");
       System.out.println("2) Dados Bancarios");
       System.out.println("3) Deposito");
       System.out.println("4) Saque");
       System.out.println("5) Transferencia");
       System.out.println("0)Sair");
       
       System.out.println("Opção:");
       opcao = in.nextInt();
       
       switch(opcao) {
           case 1:
               System.out.println("Digite o nome do titular:");
               aux = in.nextLine();
               
               c1 = new Conta (aux);
               lc.add(c1);
               break;
           case 2:
               System.out.println("Digite o numero da conta:");
               numero = in.nextInt();
               
               c1=lc.get(numero-1);
               c1.DadosBancario();
                break;
           case 3:
               System.out.println("Digite o numero da conta:");
               numero = in.nextInt();
               
               c1=lc.get(numero-1);
               
               System.out.println("Digite o valor depositado:");
               valor = in.nextDouble();
               
               c1.Depositar(valor);
                break;     
           case 4:
               System.out.println("Digite o numero da conta:");
               numero = in.nextInt();
               
               c1=lc.get(numero-1);
               
               System.out.println("Digite o valor do saque:");
               valor = in.nextDouble();
               
               c1.Sacar(valor);
            
                break;
           case 5:
               System.out.println("Digite o numero da conta de destino:");
               numero2 = in.nextInt();
               c2=lc.get(numero2-1);
              
               System.out.println("Digite o valor da transferencia:");
               valor = in.nextDouble();
               
               c1.Transferir(c2,valor);
            
                break;
                
                default:
                    if(opcao !=0)
                        System.out.println("Opção Invalida");
                break;
                
       }
   } while (opcao != 6)  ;       

   
}

}

//esse e o codigo conta.

package teste;
import java.util.Scanner;

public class Conta {
private int numero;
private String titular;
private double saldo;
static int qtdcontas = 0;

public Conta (String pTitular){
    this.titular=pTitular;
    qtdcontas++;
    this.numero=qtdcontas;
    this.saldo = 0;
    
}

public void Teste(){
    System.out.println("");
       System.out.println("--PAINEL--");
       System.out.println("--Número:" + this.numero );
       System.out.println("--Titular:" + this.titular);
       System.out.println("--Saldo:" +this.saldo);
       System.out.println("--FIM DE DADOS");
       System.out.println("....");
}

public void Depositar(double pValor){
    System.out.println("");
    System.out.println("---Realizando Deposito---");
    System.out.println("---Saldo Anterior:"+ this.saldo);
    
    this.saldo += pValor; 
    
    System.out.println("---Saldo Posterior:"+ this.saldo);
    System.out.println("---Fim do Deposito");
    System.out.println("");
   
}
public void Sacar(double pValor){
    System.out.println("");
    System.out.println("---Realizando Saque---");
    System.out.println("---Saldo Anterior:"+ this.saldo);
    
    if(pValor <=this.saldo){
    this.saldo -= pValor; 
    System.out.println("---Saldo Posterior:"+ this.saldo);
    }
    else{
    System.out.println("---Saldo insuficiente");
    }
    
    System.out.println("---Saque Realizado com sucesso---");
    System.out.println("");
   }

public void Transferir(Conta pDest, double pValor){
    System.out.println("");
    System.out.println("---Realizando Transferencia---");
    System.out.println("---Saldo Anterior:"+ this.saldo);
    
    if(pValor <=this.saldo){ 
    this.saldo -= pValor;
    pDest.saldo += pValor;
    System.out.println("---Saldo Posterior:"+ this.saldo);
    }
    else{
    System.out.println("---Saldo insuficiente");
    }
    
    System.out.println("---Transferencia Realizado com sucesso---");
    System.out.println("");
   }

}

Qual erro?

Nao executa a case 1

Olá @Marcos_Paulo4 ,

Substitua:

opcao = in.nextInt();

Por

opcao = Integer.parseInt(in.nextLine());

Toda vez que você faz um next(), nextInt() ou nextDouble(), a quebra de linha não é consumida.
O único método que consome ela é o nextLine().
Então, ou você só usa o nextLine() e faz parsing da String ou chama o nextLine() imediatamente após cada next(), nextInt() ou nextDouble() para consumir a quebra de linha que ficou no buffer.