int[] numbers = new int[100];
for (int i = 0; i < numbers.length; i++) {
if (i % 10 == 0 && i > 0) {
System.out.println();
}
System.out.print(numbers[i] + " ");
}
Печать новой строки перед печатью numbers[i]
, где i % 10 == 0
и i > 0
. %
- мод-оператор; возвращает остаток, если i / 10
. Так что i % 10 == 0
когда i = 0, 10, 20, ...
.
Что касается вашего исходного кода, вы можете заставить его работать с небольшими изменениями следующим образом:
int count = 0;
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
count++;
if (count == 10) {
System.out.println();
count = 0;
}
}
По сути, count
- это количество цифр, напечатанных в этой строке. Как только он достигает 10, вы печатаете новую строку, а затем сбрасываете ее обратно на 0 , потому что вы начинаете новую строку, и для этой строки вы еще не напечатали никаких чисел (пока).
Обратите внимание, что в приведенных выше двух решениях в конце каждой строки печатается дополнительный пробел. Вот более гибкая реализация, которая использует разделители (горизонтальные и вертикальные) только при необходимости. Это только немного сложнее.
static void print(int[] arr, int W, String hSep, String vSep) {
for (int i = 0; i < arr.length; i++) {
String sep =
(i % W != 0) ? hSep :
(i > 0) ? vSep :
"";
System.out.print(sep + arr[i]);
}
System.out.println(vSep);
}
Если вы скажете это, скажем, как print(new int[25], 5, ",", ".\n");
, то будет напечатано 25 нулей, по 5 в каждой строке. Точка (.
) в конце каждой строки и запятая (,
) между нулями в строке.