Нет способа печатать на консоли таким образом. Вы должны печатать построчно. Что вы можете сделать, это взять 2 строки, разрезать их и расположить в столбцы, создав строку, которая выглядит так, как будто имеет 2 столбца. Затем вы можете напечатать эту строку.
Это означает, что вы должны отредактировать методы, которые выводят выходные данные, чтобы они не печатали выходные данные, а возвращали свои выходные данные в виде строки. Например, такой метод:
public static void print1To10() {
for(int i = 0 ; i < 10 ; i++) {
System.out.println(i);
}
}
Необходимо изменить на:
public static String get1To10String() {
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < 10 ; i++) {
sb.append(i);
sb.append(System.lineSeparator());
}
return sb.toString();
}
Теперь вы можете написать метод, который принимает 2 строки, и расположить их в столбцах. Вот тот, который я написал. Это медленный , и его можно улучшить (не проверял и для крайних случаев), но я не собираюсь, потому что это просто очень грубая реализация, предназначенная, чтобы дать вам представление о том, что должно быть сделано.
// separation is an extra parameter I decide to add in to let the caller specify the distance between the columns.
public static String putSideBySide(String left, String right, int separation) {
StringBuilder sb = new StringBuilder();
String[] leftLines = left.split(System.lineSeparator());
String[] rightLines = right.split(System.lineSeparator());
int maxLeftLength = Arrays.stream(leftLines).mapToInt(String::length).max().orElse(0);
int minLines = Math.min(leftLines.length, rightLines.length);
// for the rows where both the left and right have stuff
for (int i = 0 ; i < minLines ; i++) {
sb.append(leftLines[i]);
for (int j = 0; j < maxLeftLength - leftLines[i].length() + separation; j++) {
sb.append(' ');
}
sb.append(rightLines[i]);
sb.append(System.lineSeparator());
}
if (leftLines.length < rightLines.length) {
// only the right columns
for (int i = 0 ; i < rightLines.length - leftLines.length ; i++) {
for (int j = 0 ; j < maxLeftLength + separation ; j++) {
sb.append(' ');
}
sb.append(rightLines[i + leftLines.length]);
sb.append(System.lineSeparator());
}
} else {
// only the left columns
for (int i = 0 ; i < leftLines.length - rightLines.length ; i++) {
sb.append(leftLines[i + rightLines.length]);
sb.append(System.lineSeparator());
}
}
return sb.toString();
}
Использование:
public static void main(String[] args){
System.out.println(putSideBySide(func1(), func2(), 4));
}
public static String func1() {
return "Hello World,\n" +
"This is some sample text.\n" +
"Testing Testing Testing\n" +
"Lorem Ipsum";
}
public static String func2() {
return "This is the right column,\n" +
"which is on the right of the left column.\n" +
"This column\n" +
"has\n" +
"more\n" +
"rows.";
}
Выход:
Hello World, This is the right column,
This is some sample text. which is on the right of the left column.
Testing Testing Testing This column
Lorem Ipsum has
more
rows.