Imprimir uma tabela em Java
-
Usando
printf()
/println()
para imprimir uma lista como uma tabela em Java -
Usando
System.out.format()
para imprimir uma lista como 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn