2017-01-08 6 views
0

Ich bin ein Anfänger in Programmierung und ich lerne gerade, wie man eine reaktionsfähige Tabelle in Java baut. Ich bin auf etwas gestoßen, von dem ich glaube, dass ich Hilfe brauche, um es zu verstehen. Lassen Sie mich ein einfaches Beispiel zur Veranschaulichung verwenden.Wie Responsive Tabelle in Java zu machen?

Ich habe 2 Arrays,

String[] name = new String[] {"James","Tom","Rodriguez"}; 
Integer[] score = new Double[] {15,20,13}; 

und ich möchte, dass sie in etwas verwandeln,

Name  Score 
James  15 
Tom  20 
Rodriguez 13 

I "\ t" verwende und irgendwie erfolgreich in ihnen ausgerichtet zu machen, aber dann Wenn ich einen Namen hinzufüge, der etwas länger ist, wird die Ausgabe so.

Name  Score 
James  15 
Tom  20 
Rodriguez Fernandes 13 

Mein Freund sagte mir System.out.printf zu verwenden, aber ich bin nicht sicher, wie es mit Arrays anwenden, vor allem, wenn die Daten groß sind. Könnte jemand mir helfen, einen Tisch so etwas besser zu formatieren?

Antwort

1

Um dies zu tun, müssen Sie zuerst die string mit maximaler Länge finden und hängen (maximale Länge minus Stringlänge) Räume während alle anderen Namen drucken, zB:

public static void print(String[] names, Integer[] score){ 
    //Find the name with max length 
    int maxLength = Arrays.stream(names) 
     .mapToInt(String::length) 
     .max().getAsInt() + 2; 

    //Now, start the printing 
    System.out.println(String.format("%1$-" + maxLength + "s", "Name") + "Score"); 
    for(int i=0 ; i<names.length ; i++){ 
     System.out.println(String.format("%1$-" + maxLength + "s", names[i]) + score[i]); 
    } 
} 

Hier, ich habe 2 auf die maximale Länge hinzugefügt, um zwei leere Leerzeichen nach dem Namen mit maximaler Länge anzuzeigen. Dies kann von main, z. B .:

public static void main(String[] args) throws Exception{ 
    print(new String[]{"James","Tom","Rodriguez"}, new Integer[]{15,20,30}); 
} 
aufgerufen werden