Condição de campo vazio

Queria uma ajuda nesse código:

int i;
int n = 100;
int posicao = n;
String nome[] = new String[n];
for (i = 1; i <= opc_menu; i++) {
                posicao = Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor desejo salvar?: "));
        if (nome[posicao] == null) {
                        nome[posicao] = JOptionPane.showInputDialog("Nome: ");
                        if (nome[posicao].isEmpty()){
                            JOptionPane.showMessageDialog(null, "Preencha o campo");
                            i--;
                } else if (nome[posicao] != null) {
                    JOptionPane.showMessageDialog(null, "Espaço já preenchido: ");
                }
            }

Queria fazer com que caso o campo nome[posicao] esteja vazio após exibir a mensagem ele volte o nome[posicao] = JOptionPane.showInputDialog("Nome: "); na mesma posição em que estava.

Acho que é mais fácil fazer com um while do que com um for. No caso, você só vai incrementar a variável de controle i quando o usuário fizer um input correto. Se o input for errado (vazio), você não incrementa e o programa vai ficar perguntando a mesma coisa até ele responder direito.

O código não está bonito mas espero ter te ajudado!

public static void main(String[] args) {
    int posicao;
    String nome[] = new String[100];
    do {
        posicao = Integer.parseInt(JOptionPane.showInputDialog("Qual espaço do vetor deseja salvar?: "));
        if (nome[posicao] == null || nome[posicao].equals("")) {
            nome[posicao] = JOptionPane.showInputDialog("Nome: ");
            if (nome[posicao].equals("")) {
                JOptionPane.showMessageDialog(null, "Preencha o campo");
            } else if (nome[posicao] != null) {
                JOptionPane.showMessageDialog(null, "Espaço preenchido ");
                return;
            }
        }
    } while (nome[posicao] != null);
}

Tirei algumas variáveis que não precisavam e fiz algumas mudanças de lógica. Está funcionado certinho!