Arreglo sin retorno solo menu.

Hola que tal compañeros del foro recurro a ustedes nuevamente ya que que tengo un problema que no encuentro donde esta, llevo todo el día buscandolo, el problema no se si esta bien o no el código, porque solo me corre pero no me muestra mas alla del menu. El probelma es este:

Datos:
Tengo un Arreglo este tiene una dimensión de 0-100 pero solo estan ocupados del 0 al 5 en el 0- esta 5, 1-7, 2-9, 3-10, 4-15 y 5-2.

Tengo que hacer un código que busque, edite, elimine y ordene asi:

En busqueda tiene de condicion que si ingreso el numero 9 me diga la posicion en la que esta, pero si ingreso otro numero que no se encuentre ocupado me diga que no se encuentra.

En Editar tengo que editar la posicion X que es el numero X, por X número, igual si ingreso un número erroneo me diga que no existe.

En Eliminar tengo que realizar la eliminacion de X número tal que al hacerlo se recorra de su posición actual, de igual manera al ingresar un número erroneo me diga que no existe.

Muestro mi código que que me digan en que esta mal estructardo, quiero pensar que son las condiciones pero ya me bloquee, porque solo me imprime el menu pero al elegir una de las tres opciones no aparce nada y solo cierra el programa.

Gracias por su ayuda y aquí esta el código...

import java.util.*;

public class OperacionesLEBEEO {
       
        public static void main (String [] args) {
               
                Scanner leer=new Scanner (System.in);
                 boolean elNumero = false;

                int opcion;
               
               
                System.out.println("=================================");
                System.out.println("Menú");
                System.out.println("Para Buscar elige:   '1' ");
                System.out.println("Para Editar elige:   '2' ");
                System.out.println("para Eliminar elige: '3' ");
                System.out.println("Para Salir elige:    '0'");
                System.out.println("==================================");
                opcion= leer.nextInt();
               
               
                switch (opcion){
                case '1':
                        int num[]=new int[0];
                int a;
                for(a=0;a<num.length;a++){
                    System.out.print("ingrese un número: ");
                    num[a]=leer.nextInt();
                }
                for(a=0;a<num.length;a++){
                    System.out.println(num[a]);
                }

                System.out.print("Buscar un número: ");
                int numero;
                numero=leer.nextInt();

                for(a=0;a<num.length;a++){
                    if (numero == num[a]) {
                        System.out.println("El número esta en el indice "+a+", en la posicion "+(a+1));
                        elNumero = true;
                    }
                }

                if(elNumero==false) {
                    System.out.println("El numero no esta");
                }
                                        break;
                case '2':
                       
                        System.out.print("Número de elementos del arreglo");
                        int numero1=leer.nextInt();
                        int[] arreglo=new int[numero1];
                        for(int a1=0;a1<numero1;a1++){
                        System.out.print("Elemento del campo"+(a1+1));
                        arreglo[a1]=leer.nextInt();
                        }
                        System.out.print("Que elemento del arreglo quiere cambiar");
                        int a1=leer.nextInt();
                        System.out.print("Por cual elemento lo quiere cambiar");
                        int b=leer.nextInt();
                        arreglo[b]=a1;
                        System.out.print("el arreglo queda");
                        for(int b1=0;b1<numero1;b1++){
                        System.out.print(""+arreglo[b1]);
                        }
                        break;
                case '3':
                       
                        System.out.println("Ingrese la posicion que desea eliminar");
                        int a2 = new Scanner(System.in).nextInt();
                        int[] arreglo1 = new int[0];
                        if (a2 == arreglo1.length - 1) {
                        arreglo1[a2] = 0;
                        } else {

                        for (int b1 = a2 + 1; b1 < arreglo1.length; b1++) {
                        arreglo1[b1 - 1] = arreglo1[b1];
                        }

                        arreglo1[arreglo1.length - 1] = 0;

                       
                        for (int b1 = 0; b1 < arreglo1.length; b1++) {
                        System.out.print(arreglo1[b1] + " - ");
                        }

                        System.out.println();
                        }
                        break;
                default:
                        System.out.println("Ingrese un opción válida");
                               
                }//Fin del Switch
               
               
                System.out.println();
                System.out.println("--------------------------------------");
                System.out.println("| Gracias por usar mi programa       |");
                System.out.println("--------------------------------------");  
        }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Felipe Garcia

Modifique el arreglo

Hola que tal ya modifique el código tenía unas fallas en el código como lo eran el Do While y los casos '1', '2' y '3'. Puse su Do en el menu y el While al finalizar el switch hasta ahi vamos bien, cambie las comillas por solo números ya que los declare de tipo entero y ya corre sin problemas... Ahora mi duda es esta:

Como puedo hacer para que caso 2 y caso 3 me tomen los datos almacenados de caso 1 y no ingresar datos nuevos en cada caso y asi poder seguir haciendo las acciones dependiendo el caso.

Muchas gracias por leer y por ayudarme.

Imagen de ezamudio

refactoring

Te recomiendo que hagas un refactoring de tu código: crea un método para cada acción (editar, eliminar, buscar) y llama cada método en el switch, en vez de tener todo el código amontonado ahí. Eso va a mejorar la legibilidad de tu código y lo hará más fácil de entender y modificar, y te va a ayudar mucho para encontrar problemas.

Imagen de neko069

Variable de clase

Saca las variables que necesites de locales (del método) y decláralas globales(de clase) y con éso ya tendrás los valores almacenados en tus variables mientras tu código se esté ejecutando, y aplica el consejo de Enrique, después de un rato si da miedo terminar de leer todo el código.

Imagen de ezamudio

Ceylon

Siguiendo el consejo de un amigo, aquí la solución (parcial) en Ceylon (falta la opción 3):

Integer menu() {
  while (true) {
    print("");
    print("       Menu
           Elige una opción:
           1. Buscar
           2. Editar
           3. Eliminar
           0. Salir"
);
    if (exists i = readNumber(),
        i>=0 && i<4) {
      return i;
    }
    print("OPCION INVALIDA. Intenta de nuevo.");
  }
}

Integer? readNumber() =>
  if (exists x = process.readLine(),
      is Integer n = Integer.parse(x))
  then n else null;

void buscar(Array<Integer> arr) {
  print("Indica el número a buscar:");
  if (exists n = readNumber()) {
    if (exists index = arr.firstOccurrence(n)) {
      print("El número ``n`` se encuentra en el índice ``index``");
    } else {
      print("No se encuentra en el arreglo el número ``n``");
    }
  } else {
    print("Número inválido.");
  }
}

void editar(Array<Integer> arr) {
  print("Indica el índice del elemento a modificar:");
  if (exists indice = readNumber(),
      indice >= 0 && indice < arr.size) {
    print("Valor actual en índice ``indice``: ``arr[indice] else "<VACIO>"``");
    print("Indica el nuevo valor:");
    if (exists v = readNumber()) {
      arr[indice] = v;
      print("Nuevo valor en ``indice``: ``v``");
    } else {
      print("Valor inválido.");
    }
  } else {
    print("Indice inválido.");
  }
}
void eliminar(Array<Integer> arr) {
}

shared void run() {
  value arr = Array.ofSize(100,0);
  arr[0] = 5;
  arr[1] = 7;
  arr[2] = 9;
  arr[3] = 10;
  arr[4] = 15;
  arr[5] = 2;
  while (true) {
    value opt = menu();
    print("Elegiste la opcion ``opt``");
    switch(opt)
    case (1) {
      buscar(arr);
    }
    case (2) {
      editar(arr);
    }
    case (3) {
      eliminar(arr);
    }
    else {
      print("Adios.");
      return;
    }
  }
}

Imagen de Felipe Garcia

Gracias a mabos

Lo solucione con el comenario de ezamudio, aunque despues voy a aplicarlo como lo comentas rafactoring para que este mas limpio el codigo. Me servira de guia el codigo hecho en Ceylon