Hola.
Tu programa funciona, pero creo que lo que te ocurre es que has escogido mal la clase con la que inicializas el ArrayList.
Tú has creado un ArrayList con la clase Double, que es una clase para trabajar con valores numéricos reales, pero el programa consiste en trabajar con "clientes".
Supongo que para los clientes introduces un nombre, que se debe guardar como String. Desde luego no se puede guardar como Double, por eso te sale la excepción
InputMismatch.
Esta excepción indica que el programa está esperando que se le den datos numéricos por teclado, pero está recibiendo cadenas String y entonces no sabe que hacer con ellas.
Así que hay que cambiar la clase del ArrayList:
public class Mclientest {
ArrayList<String> listaclientes;
Por cierto, también es recomendable indicar de nuevo la clase el constructor del ArrayList cuando lo inicializamos:
public static void main(String[] args) {
Mclientest miLista = new Mclientest();
miLista.listaclientes = new ArrayList<String>();
miLista.leerOpcion();
}
Luego hay que corregir los métodos para que pida y trabaje con String, no Double.
Por ejemplo:
public void ingresarCliente() {
Scanner teclado = new Scanner(System.in);
String cliente;
System.out.print("Ingrese Cliente: ");
cliente = teclado.nextLine();
listaclientes.add(cliente);
}
Tras hacer todas las correcciones en cada método, el programa funciona perfectamente.
Es decir, tu programa está bien. Solo has errado al escoger la clase del ArrayList. Si vamos a trabajar con nombres de clientes, hay que usar String, no Double.