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