Como desenvolver um algoritmo onde dados dois números inteiros A e B, cria-se um terceiro inteiro C mesclando os dois primeiros de forma alternada?

Seguem mais detalhes do desafio, a resposta que foi dada e como poderia ter sido resolvida essa atividade:

Dados dois numeros inteiros A e B, crie um terceiro inteiro C seguindo as seguintes regras:

O primeiro número de C é o primeiro número de A;
O segundo número de C é o primeiro número de B;
O terceiro número de C é o segundo número de A;
O quarto número de C é o segundo número de B;
Assim sucessivamente…

Caso os números de A ou B sejam de tamanhos diferentes, completar C com o restante dos números do inteiro maior. Ex: A = 10256, B = 512, C deve ser 15012256.
Caso C seja maior que 1.000.000, retornar -1
Desenvolva um algoritmo que atenda a todos os requisitos acima.

Código Proposto como Resposta:

public class ManipulacaoNumerica {

public static void GerarC(String a, String b) {

if (a != null && b != null) {

    StringBuilder c = new StringBuilder();
    System.out.println("Valores de Entrada: " + a + " - " + b);
    int i = 0;
    int j = 0;

    loop: for (; i <= a.length();) {
        System.out.println(i);
        int proxi = i + 1;
        if (proxi <= a.length()) {
            c.append(a.substring(i, proxi)).toString();
        }
        i++;

        for (; j <= b.length();) {
            System.out.println(j);
            int proxj = j + 1;
            if (proxj <= b.length()) {
                c.append(b.substring(j, proxj)).toString();
            }
            j++;

            continue loop;

        }
    }
    try{
        int valor = Integer.valueOf(c.toString());
        if (valor < 1000000) {
            System.out.println("Valor de Saída: " + c);
        } else {
            valor = -1;
            System.out.println("Número maior que 1.000.000:" + valor);
        }
    }catch (Exception e) {
        // TODO: handle exception
        int valor = -1;
        System.out.println("Ocorreu um erro na aplicação: "+ e +" o valor de c é: "+valor);
    }
  }
}

 public static void Executa(String a, String b) {

     if(a.length() > b.length()){
         GerarC(a,b);
     }else{
        GerarC(b,a);
}

}

public static void main(String[] args) {

Executa("24", "1999");

}

}

Queria saber se esse código está muito ruim.