Безусловный ввод пробела (в конце) в следующей строке:
System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ") ");
Пробел должен быть только между двумя подмножествами, но не в конце строки. Запишите его следующим образом:
if (j < n - 2) {
System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ") ");
} else {
System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + ")");
}
Если вам удобен тернарный оператор, вы можете записать его всего в одну строку следующим образом:
System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + (j < n - 2 ? ") " : ")"));
Неправильное условие разрыва строки:
Следующее условие вызывает разрыв строки только в случае i<2
, что справедливо, когда у вас есть 5
элементов в массиве, но попробуйте с 7
или более элементами, и вы сможете понять, какую проблему это вызывает.
if(i<2)
Замените его на
if (i < n - 3)
Помимо этого, я также рекомендую вам заменить
System.out.print("\n");
на
System.out.println();
или на
System.out.printf("%n");
, потому что в рекомендуемых версиях выходные строки разрываются с использованием предпочтительного для платформы разделителя строк, тогда как System.out.print("\n")
является методом грубой силы (т.е. заставляет систему использовать \n
в качестве разделителя строк), что может быть проблема для некоторых платформ.
Следующий код включает все эти предложения:
import java.util.Scanner;
class Main {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int a[] = new int[n];
for (int i = 0; i < n; i++)
a[i] = in.nextInt();
for (int i = 0; i < n - 2; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
System.out.print("(" + a[i] + ", " + a[j] + ", " + a[k] + (j < n - 2 ? ") " : ")"));
}
}
if (i < n - 3)
System.out.println();
}
}
}
Пробный запуск:
7
1 2 3 4 5 6 7
(1, 2, 3) (1, 2, 4) (1, 2, 5) (1, 2, 6) (1, 2, 7) (1, 3, 4) (1, 3, 5) (1, 3, 6) (1, 3, 7) (1, 4, 5) (1, 4, 6) (1, 4, 7) (1, 5, 6) (1, 5, 7) (1, 6, 7)
(2, 3, 4) (2, 3, 5) (2, 3, 6) (2, 3, 7) (2, 4, 5) (2, 4, 6) (2, 4, 7) (2, 5, 6) (2, 5, 7) (2, 6, 7)
(3, 4, 5) (3, 4, 6) (3, 4, 7) (3, 5, 6) (3, 5, 7) (3, 6, 7)
(4, 5, 6) (4, 5, 7) (4, 6, 7)
(5, 6, 7)