Converter JavaScript para Java

Boa noite galera.

Resolvi um desafio em JavaScript, mas preciso aplicá-lo em Java. Como estou no começo do aprendizado de Java não to conseguindo.

Abaixo a solução em JavaScript:

  let qtdCasos = gets();
  let palavras = [];

for (let i = 0; i < qtdCasos; i++) {
    let leitura = gets().split(" ");
    palavras.push({
        "texto1": leitura[0],
        "texto2": leitura[1]
    });
}

let stringCombinada = [];
for (palavra of palavras) {
    let contador = palavra.texto1.length > palavra.texto2.length ? palavra.texto1.length : palavra.texto2.length;
    let texto = "";
    for (let i = 0; i < contador; i++) {
        if (i < palavra.texto1.length) {
            texto = texto.concat(palavra.texto1.substring(i, i + 1));
        }
        if (i < palavra.texto2.length) {
            texto = texto.concat(palavra.texto2.substring(i, i + 1));
        }
    }

    console.log(texto);
}

Como as entradas são automática da plataforma, em Java elas devem seguir a seguinte regra:

Java

Em Java existe várias formas de implementar o STDIN e STDOUT recomendamos utilizar BufferedReader para o STDIN e o System.out.println para o STDOUT.

**Exemplo:**

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

StringTokenizer st = new StringTokenizer(br.readLine()); // Lê a linha de entrada

int a = Integer.parseInt(st.nextToken());

System.out.println(a); // Imprime o dado

Em JavaScript, as entradas de dados seguem essas regras, que usei:

Em JavaScript as funções de STDIN e STDOUT respectivamente são gets e console.log , a função gets é implementada internamente para auxiliar a entrada dos dados.

Exemplo:

let line = gets(); // Retorna a próxima linha de entrada

console.log(line); // Imprime o dado

Estou testando várias classes, métodos em Java mas não estou conseguindo reproduzir o mesmo resultado.

Para entenderem o desafio e as saídas necessárias:

Desafio

Crie um algoritmo que receba dois inputs que sejam strings e combine-as alternando as letras de cada string.

Deve começar pela primeira letra da primeira string, seguido pela primeira letra da segunda string, em seguida pela segunda letra da primeira string e continuar dessa forma sucessivamente.

As letras restantes da cadeia mais longa devem ser adicionadas ao fim da string resultante e retornada.

Entrada

A entrada contém vários casos de teste. A primeira linha contém um inteiro N que indica a quantidade de casos de teste que vem a seguir. Cada caso de teste é composto por uma linha que contém duas cadeias de caracteres, cada cadeia de caracteres contém entre 1 e 50 caracteres inclusive.

Saída

Combine as duas cadeias de caracteres da entrada como mostrado no exemplo abaixo e exiba a cadeia resultante.

example

Olha, se isso for uma plataforma de problemas de programação, você não precisa armazenar todas as entradas para só no fim exibir o resultado, isso acaba complicando o código!
Você pode ler as entradas e ir já processando e exibindo o resultado. Por que, embora que no console apareça tudo misturado, a plataforma que vai analisar o teu algoritmo só vai levar em consideração tudo o que você produziu, a saída.

Pelo menos, é assim no URI e na Maratona de programação. Dito isso, o código em java fica assim:

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        int casos = Integer.parseInt(scan.nextLine());         
        
        for(int i = 1; i <= casos; i++) {
            
            StringBuilder sb = new StringBuilder();
            String[] palavras = scan.nextLine().split(" ");
        
            int maxSize = Math.max(
                palavras[0].length(),
                palavras[1].length());
            
            for(int j = 0; j < maxSize; j++) {
                
                if(j < palavras[0].length()) {
                    sb.append(palavras[0].charAt(j));
                }
                
                if(j < palavras[1].length()) {
                    sb.append(palavras[1].charAt(j));
                }
            }
            
            //Mostra o resultado
            System.out.println(sb.toString());
        }
    }
    
}