[AJUDA] Organizar código/ criar classe/métodos

Boa noite pessoal, preciso de uma grande ajuda de vcs manjadores em java, to terminando um código para um trabalho da faculdade, como não sou muito bom em java meu código está uma bagunça e preciso organizar com outras classes e métodos mas estou totalmente travado e não sei como avançar =/. (A classe main tem que ficar apenas com os cases, enquanto o restante tem q ir para um outro arquivo java)
Segue o código:

[code]import javax.swing.JOptionPane;

public class PedidosFila {

private static class FILA {

   public int num;
   public FILA prox;

}

public static void main(String[] args) {
String[][] pedido =
{
{“1 - hamburguer”, “2 - cachorro quente”, “3 - batata frita”, “4 - açai”}
};

  String cardapio="";
  
   FILA inicio = null;
   FILA fim = null;
   FILA aux;
   FILA anterior;
   
   int op, numero, achou, auxnum, ped = 0;
   do { op = Integer.parseInt(JOptionPane.showInputDialog(null,"n" +
   "                      OPÇÕES:n" + 
   "n" +
   "1 - Escolher pedido e entrar na filan" +
   "2 - Consultar fila n" +
   "3 - Inserir no final da fila n" +
   "4 - Remover da fila n"+
   "5 - Esvaziar a fila n" +
   "6 - Sair *n" +
   "n" +
   "Digite sua opção: n", 
   JOptionPane.INFORMATION_MESSAGE)); 
   switch (op) {
   case 1: {
           for (int i=0; i<pedido.length; i++){
               for(int j=0; j<pedido[i].length; j++){
                
                 cardapio += pedido[i][j]+" ";
               }
   }
           JOptionPane.showMessageDialog(null,"Cardápio: n"+cardapio);
           
           ped = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o número do pedido: ", JOptionPane.INFORMATION_MESSAGE));
           
           if(ped>=1&&ped<5){
               auxnum = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite uma senha para inserir na fila: ", JOptionPane.INFORMATION_MESSAGE));
               FILA novo = new FILA();
               novo.num = auxnum;
               if (inicio == null) {
                   inicio = novo;
                   fim = inicio;
                   novo.prox = null;
               } else {
                   novo.prox = inicio;
                   inicio = novo;
               }
               JOptionPane.showMessageDialog(null, "Senha inserida com sucesso ");
           } else {
               JOptionPane.showMessageDialog(null, "Opção inválida ");
           }break;
   }
           
   case 2: {
               if (inicio == null) {
                   JOptionPane.showMessageDialog(null, "Fila vazia ");
               } else {
                   JOptionPane.showMessageDialog(null, "nClientes na fila:n ");
                   aux = inicio;
                   while (aux != null) {
                       JOptionPane.showMessageDialog(null, aux.num + "; ");
                       aux = aux.prox;
                   }
               }break;
           }
   
   case 3: {
   auxnum = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a senha para ser inserido no fim da fila: ", JOptionPane.INFORMATION_MESSAGE));
               FILA novo = new FILA();
               novo.num = auxnum;
               if (inicio == null) {
                   // a lista estava vazia e o elemento inserido será o primeiro e o último
                   inicio = novo;
                   fim = novo;
                   novo.prox = null;
               } else {
                   // a lista já contém elementos e o novo elemento será inserido no fim da lista
                   fim.prox = novo;
                   fim = novo;
                   fim.prox = null;
                   
               }
               JOptionPane.showMessageDialog(null, "Senha inserida no final da fila");
  break; }
   case 4: {
               if (inicio == null) {
                   JOptionPane.showMessageDialog(null, "Fila vazia ");
               } else {
                   numero = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a senha para ser removida: ", JOptionPane.INFORMATION_MESSAGE));
                   aux = inicio;
                   anterior = null;
                   achou = 0;
                   while (aux != null) {
                       if (aux.num == numero) {
                           achou = achou + 1;
                           if (aux == inicio) {
                               inicio = aux.prox;
                               aux = inicio;
                           } else if (aux == fim) {
                               anterior.prox = null;
                               fim = anterior;
                               aux = null;
                           } else {
                               anterior.prox = aux.prox;
                               aux = aux.prox;
                           }
                       } else {
                           anterior = aux;
                           aux = aux.prox;
                       }
                   }
                   if (achou == 0) {
                       JOptionPane.showMessageDialog(null, "Numero não encontrado");
                   } else if (achou == 1) {
                       JOptionPane.showMessageDialog(null, "Removido 1 vez ");
                   } else {
                       JOptionPane.showMessageDialog(null, "Numero removido " + achou + " vezes");
                   }
               }break;
           }
   case 5: {
               if (inicio == null) {
                   JOptionPane.showMessageDialog(null, "Fila vazia");
               } else {
                   inicio = null;
                   JOptionPane.showMessageDialog(null, "Fila esvaziada");
               }break;
           }
   case 6: {
           break;
       }
       }
   }while (op != 6);

}
}[/code]

Alguma alma boa pelo menos para fazer um exemplo em algum dos meus case? =(

Que tal criar um arquivo Fila.java, colocar a declaração da classe Fila nele, criar os métodos para fazer a manutenção da fila (consultar, inserir, …), mover o código que já está pronto para fazer essa manutenção e suas variáveis usadas pros devidos métodos e passar parâmetros pra fila a partir dos cases ?

é exatamente isso que eu quero, mas ainda sou um pouco perdido em passar parâmetros e criar métodos, poderia fazer apenas 1 exemplo com um dos meus case? acho q eu conseguiria fazer o resto a partir desse exemplo.
obg por responder. ^^’