2017-10-14 4 views
1

Gibt es eine Möglichkeit, bequem String.format (oder printf) zu verwenden, um die Werte in einem Array zu drucken. Beispiel:String.format und Arrays

public static void main(String[] args) { 
    System.out.printf("Today is %tc and your args are %TAG", new Date(), args); 
} 

Der Ausgang Ich suche nach:

Today is Sat Oct 14 14:54:51 CEST 2017 and your args are uno dos tres 

Wie das Beispiel schon sagt, ich weiß nicht, wie lange das args Array ist? Bis jetzt ist die einzige Lösung, die ich gefunden habe, zuerst .format zu verwenden, um den ersten Teil der Zeichenkette zu bekommen, dann durch das args-Array zu schlüpfen und durch Leerzeichen getrennte Stücke anzuhängen.

Antwort

2

Sie haben , die es als [ „unos“, „dos“, tres "] formatiert, aber ich nehme an, dass ist nicht das, was Sie wollen.

Normalerweise verwende ich das Streaming api das Ergebnis zu sammeln in einen String: Arrays.stream(args).collect(Collectors.joining(" "));

public static void main(String[] args) { 
    System.out.printf("Today is %tc and your args are %s%n", new Date(), 
    Arrays.stream(args).collect(Collectors.joining(" "))); 
} 
+0

Um die Bearbeitung rückgängig zu machen: Die% n in prinf bedeutet "Verwenden Sie den plattformspezifischen Code für eine neue Zeile zu gehen". –

0

Da es nicht eine primitive Array ist, können Sie args in einer Liste wickeln:

System.out.printf("%Tc %s", new Date(), Arrays.asList(args)); 

Dies verwendet dann die Implementierung von toString für List.