Попробуйте это:
String format = "%s %d %s %d %d %s";
String[] arrayString = {"x","y","z"};
int[] arrayInt = {10,11,12};
System.out.format(format, arrayString[0], arrayInt[0], arrayString[1], arrayInt[1], arrayInt[2], arrayString[2]);
EDIT: Я хотел бы сделать это таким образом, чтобы быть абсолютно общее:
public static void main(String[] args) {
String[] stringArray = {
"First", "Second", "Third", "Fourth"
};
Boolean[] boolArray = {
true, false, true
};
Integer[] intArray = {1, 2};
int[] outputOrder = {0, 1, 0, 1, 2, 2, 1, 0};
Object[][] outputContent = {stringArray, boolArray, intArray};
System.out.println(formatMyOutput(outputContent, outputOrder));
}
private static String formatMyOutput(Object[][] printingArrays, int[] outputOrder) {
StringBuilder outputBuilder = new StringBuilder();
int[] currentlyPrinting = new int[printingArrays.length];
boolean notFirst = false;
for (int indexToPrint : outputOrder) {
if (notFirst) {
outputBuilder.append(" ");
} else {
notFirst = true;
}
outputBuilder.append(
printingArrays[indexToPrint][currentlyPrinting[indexToPrint]++]
.toString()
);
}
return outputBuilder.toString();
}
Я ищу для динамического решения, а не в зависимости от числа аргументов , –
Тогда это, конечно, 'x 10 y 11 z 12', что вы ожидаете ... –
Nop, Я ожидаю тот же порядок, что и в форматированной строке. –