Claro, ese objeto
vehículo1 lo estás creando en el case 1.
Pero ese case, puede que ocurra o que no ocurra..., por tanto si ocurre un case 2, sin que previamente haya ocurrido un case 1, estarías haciendo referencia a un objeto que no ha sido creado.
Para evitar esto, puedes declarar ese objeto
antes de comience el switch, aunque sea con valor null.
Ya luego, si ocurre un case 1, no lo declaras de nuevo. Solamente has de construir un nuevo objeto usando la misma referencia.
Y en el case 2, ya no habrá problemas para comprobar si esa referencia tiene valor null o no, porque la existencia de esa referencia ahora está garantizada. No va a depender de que ocurra un case 1 previamente.
do {
System.out.println("1. Generar vehículo");
System.out.println("2. Mostrar datos");
System.out.println("3. Calcular beneficio");
System.out.println("4. Salir");
try {
System.out.println("Escoge la opcion:");
opcionMenu = teclado.nextInt();
Vehiculo Vehiculo1 = null;
switch (opcionMenu) {
case 1:
Vehiculo1 = new Vehiculo("1234ABC", "Seat", 1000);
System.out.println(Vehiculo1.toString());
break;
case 2:
if (Vehiculo1 == null) { \\\ AQUÍ TENGO EL PROBLEMA
System.out.println("No has creado el vehiculo");
}
break;
case 3:
break;
case 4:
salir = true;
break;
default:
System.out.println("Tienes que introducir un valor entre 1 y 4");
}
} catch (InputMismatchException e) {
System.out.println("Tienes que introducir un valor entre 1 y 4");
teclado.next(); // volvemos a activar la entrada de teclado aqui. si no entramos en bucle
}
} while (!salir);