Imprimir uma tabela em Java

Rupam Yadav 12 outubro 2023
  1. Usando printf() / println() para imprimir uma lista como uma tabela em Java
  2. Usando System.out.format() para imprimir uma lista como uma tabela em Java
Imprimir uma tabela em Java

Para imprimir qualquer informação em uma estrutura tabular em Java, podemos usar o método printf() ou format() da classe java.io.PrintStream.

Usando printf() / println() para imprimir uma lista como uma tabela em Java

O método printf(format, arguments) fornece formatação de String. Podemos especificar as regras de formatação usando padrões de formato e as regras começam com %.

Aqui temos uma classe POJO Student com atributos básicos como id, name, age e grae e a classe TestExample onde criamos uma Lista de alunos e imprimimos essa informação em uma tabela formato.

A string de formatação consiste em literais e especificadores de formato, que incluem sinalizadores, largura, precisão e caractere de conversão nesta sequência. Por exemplo %[flags][width][.precision]conversion-charcater. Os especificadores fornecidos entre colchetes são opcionais. O printf usa internamente java.util.Formatter para analisar a string de formato e gerá-la.

O conversion-character determina como a string é formatada. Aqui usamos dois dos mais comuns, s, d e c. O s formata cadeias de caracteres enquanto d formata inteiros decimais e o resultado de c é um caráter Unicode. Portanto, neste código, usamos uma combinação de largura e caractere de conversão para formatar os dados do aluno em uma tabela.

O método printf("%10s %20s %5s %5s %5s", "STUDENT ID", "NAME", "AGE", "GRADE") tem o especificador de formato para formatar os argumentos passados. Assim, %10s, por exemplo, formata uma string com um determinado número de caracteres e também a justifica à direita. O método println() move o cursor para a próxima linha após imprimir o resultado.

O método format("%10s %20s %5d %5c",student.getId(), student.getName(), student.getAge(), student.getGrade()) também tem o especificador de formato e métodos getter de a classe do aluno para obter o valor dos 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;
  }
}

Produção:

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

Usando System.out.format() para imprimir uma lista como uma tabela em Java

O pacote java.io fornece à classe PrintStream dois métodos usados ​​para substituir print e println. Esses métodos são format() e printf() e são equivalentes. Em format(String format, Object... args), o formato especifica a formatação a ser usada, args, que são a lista de argumentos a serem impressos usando esta formatação.

Aqui, criamos um array 2D de tipo de dados String; as 4 linhas e colunas não são especificadas neste ponto. Significa simplesmente que estamos declarando um array de 4 matrizes. Em seguida, inicializamos cada linha com um objeto String.

Executamos um loop for para cada linha dentro da tabela, um array multidimensional de arrays. Para cada linha, formatamos a linha usando System.out.format() especificando o padrão de formatação para cada linha.

Aqui, %15s significa string justificada à direita com 15 larguras e %n é um separador de linha específico da 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);
    }
  }
}

Produção:

  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

Artigo relacionado - Java Print