Há como imprimir ordenadamente?

import java.util.Scanner;
public class Main { 
    
   public static void main(String[] args) { 
       
      String [] nome = new String[2];
      int [] idade = new int[2];
      String [] tel = new String[11];
      String [] endereco = new String[2];
      Scanner entrada = new Scanner(System.in); 
      
      for (int c = 0; c<2; c++) { 
         System.out.printf("\nDigite o %dº nome: \n", c+1); 
         nome[c] = entrada.nextLine();
       
         System.out.println("\nDigite a idade: ");
         idade[c] = Integer.parseInt(entrada.nextLine());
         
         System.out.println("\nDigite o telefone: "); 
         tel[c] = entrada.nextLine();
         
         System.out.println("\nDigite o endereço: "); 
         endereco[c] = entrada.nextLine();
         
         System.out.println("\n_______________________________");
      }
      System.out.println("\n--------------------------------------------------------------");
      System.out.println("NOME | IDADE | TELEFONE | ENDEREÇO\n");
      System.out.printf("| %s | %d | %s | %s |\n", nome[0], idade[0], tel[0], endereco[0]);
      System.out.printf("| %s | %d | %s | %s |\n", nome[1], idade[1], tel[1], endereco[1]);
      System.out.println("--------------------------------------------------------------");
   }
}

Há como eu imprimir em blocos? dessa mesma forma ai mas com o espaçamento certo para que nenhum deles ultrapasse a linha?

Ex:
Joao | 28 | blabla | blabla
Guilherme | 11 | bla bla | blablabla

Assim:
Joao ____ | 28 | blabla | blabla
Guilherme | 11 | bla bla | blablabla

String a = "teste";
String b = "testeteste";
        
System.out.printf( "%-10s | %-10s | %-10s | %-10s\n", a, a, a, a );
System.out.printf( "%-10s | %-10s | %-10s | %-10s\n", b, b, b, b );

%-10s: imprime uma string com 10 posições, preenchendo com os espaços se necessário e alinhada à esquerda (sinal de -).