Imprimir una tabla en Java

Rupam Yadav 12 octubre 2023
  1. Uso de printf() / println() para imprimir una lista como una tabla en Java
  2. Uso de System.out.format() para imprimir una lista como una tabla en Java
Imprimir una tabla en Java

Para imprimir cualquier información en una estructura tabular en Java, podemos utilizar el método printf() o format() de la clase java.io.PrintStream.

Uso de printf() / println() para imprimir una lista como una tabla en Java

El método printf(format, arguments) proporciona formato de cadena. Podemos especificar las reglas para formatear usando patrones de formato y las reglas comienzan con %.

Aquí tenemos una clase POJO Student con atributos básicos como id, name, age y grade y la clase TestExample donde creamos una Lista de estudiantes e imprimimos esa información en un tabular formato.

La cadena de formato consta de literales y especificadores de formato, que incluyen indicadores, ancho, precisión y carácter de conversión en esta secuencia. Por ejemplo, %[flags][width][.precision]conversion-charcater. Los especificadores que se dan entre paréntesis son opcionales. El printf utiliza internamente java.util.Formatter para analizar la cadena de formato y generarla.

El conversion-character determina cómo se formatea la cadena. Aquí hemos utilizado dos de los más comunes, s, d y c. La s formatea cadenas mientras que la d formatea enteros decimales, y el resultado de c es un carácter Unicode. Por lo tanto, en este código, hemos usado una combinación de ancho y carácter de conversión para formatear los datos del estudiante dado en una tabla.

El método printf("%10s %20s %5s %5s", "STUDENT ID", "NAME", "AGE", "GRADE") tiene el especificador de formato para formatear los argumentos pasados. Así, %10s, por ejemplo, formatea una cadena con un número específico de caracteres y también la justifica a la derecha. El método println() mueve el cursor a la siguiente línea después de imprimir el resultado.

El método format("%10s %20s %5d %5c",student.getId(), student.getName(), student.getAge(), student.getGrade()) también tiene el especificador de formato y los métodos getter de la clase de estudiantes para obtener el valor de los atributos.

import java.util.ArrayList;
import java.util.List;

public class TableExample {
  public static void main(String args[]) {
    List<Student> students = new ArrayList<>();
    students.add(new Student("S101", "John", 8, '4'));
    students.add(new Student("S102", "Leo", 10, '6'));
    students.add(new Student("S103", "Mary", 5, '2'));
    students.add(new Student("S104", "Lisa", 6, '3'));

    System.out.println(
        "-----------------------------------------------------------------------------");
    System.out.printf("%10s %20s %5s %5s", "STUDENT ID", "NAME", "AGE", "GRADE");
    System.out.println();
    System.out.println(
        "-----------------------------------------------------------------------------");
    for (Student student : students) {
      System.out.format("%10s %20s %5d %5c", student.getId(), student.getName(), student.getAge(),
          student.getGrade());
      System.out.println();
    }
    System.out.println(
        "-----------------------------------------------------------------------------");
  }
}
class Student {
  private String id;
  private String name;
  private int age;
  private Character grade;
  Student(String id, String name, int age, Character grade) {
    this.id = id;
    this.name = name;
    this.age = age;
    this.grade = grade;
  }

  public String getId() {
    return id;
  }

  public Character getGrade() {
    return grade;
  }

  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }
}

Producción :

-----------------------------------------------------------------------------
STUDENT ID                 NAME   AGE GRADE
-----------------------------------------------------------------------------
      S101                 John     8     4
      S102                  Leo    10     6
      S103                 Mary     5     2
      S104                 Lisa     6     3
-----------------------------------------------------------------------------

Uso de System.out.format() para imprimir una lista como una tabla en Java

El paquete java.io proporciona a la clase PrintStream dos métodos utilizados para reemplazar print e println. Estos métodos son format() y printf() y son equivalentes. En format(String format, Object... args), el formato especifica el formato a utilizar, args, que son la lista de argumentos a imprimir utilizando este formato.

Aquí, creamos un array 2D del tipo de datos String; las 4 filas y columnas no se especifican en este momento. Simplemente significa que estamos declarando un array de 4 matrices. Luego, inicializamos cada fila con un objeto String.

Ejecutamos un bucle for para cada fila dentro de la tabla, un array multidimensional de matrices. Para cada fila, formateamos la fila usando System.out.format() especificando el patrón de formato para cada fila.

Aquí %15s significa cadena justificada a la derecha con 15 anchos, y %n es un separador de línea específico de la plataforma.

public class Test1 {
  public static void main(String args[]) {
    String[][] table = new String[4][];
    table[0] = new String[] {"Apple", "Banana", "Papaya"};
    table[1] = new String[] {"Chicken", "Mutton", "Fish"};
    table[2] = new String[] {"Carrots", "Beans", "Cabbage"};
    table[3] = new String[] {"Candy", "Cake", "Bread"};

    for (String[] row : table) {
      System.out.format("%15s %15s %15s %n", row);
    }
  }
}

Producción :

  Apple         Banana         Papaya
Chicken         Mutton           Fish
Carrots          Beans        Cabbage
  Candy           Cake          Bread
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Print