malthe.w:
Tengo un ArrayList de miembros, cada uno con su propia información como el nombre, edad, fecha de nacimiento, etc., que se llama a un método toString cuando se imprime a la terminal.
Aquí está el código:
@Override
public String toString() {
return "|ID: " + id + "| Name: " + name + "| Age: " +
calculateAge(age, LocalDate.now()) + "| Tlf.: " + tlfNo + "| Active: " +
activeMember + "| Next payment: " + nextPayment + "|";
}
Y aquí está la salida:
|ID: 12| Name: Casper| Age: 49| Tlf.: 12345678| Active: true| Next payment: 2018-02-12|
|ID: 13| Name: Allan| Age: 69| Tlf.: 12345678| Active: true| Next payment: 2018-01-12|
|ID: 16| Name: Christina| Age: 100| Tlf.: 12345678| Active: false| Next payment: 2018-02-04|
|ID: 19| Name: RICK| Age: 49| Tlf.: 12345678| Active: false| Next payment: 2018-04-14|
¿Cómo consigo las diferentes piezas de información para alinear una encima de la otra?
Veselin Davidov:
Usted puede hacer algo como:
public String toString() {
return String.format("|id: %10d |Name: %30s| Age: %02d | Tlf.: %d| Active: %s| Next Payment: %s |", id, getNameTrimmed() , age , tlfNo , activeMember, nextPayment );
}
private String getNameTrimmed(){
if(name.length()>30) {
return name.substring(0,27)+"...";
}
return name;
}
De esta manera la identificación tendrá 10 caracteres (que todavía se romperá el formato si usted tiene identificadores más largos) El nombre tendrá 30 por lo que necesita para agregar un método para darle nombre de 30 caracteres