#java #arrays
#java #массивы
Вопрос:
Это глупый вопрос, я признаю это, но это крошечная часть моего большого вычислительного проекта, которую я просто не могу исправить. Чтобы разбить его, я хочу напечатать значения моего массива в новой строке.
Для эстетической привлекательности мне нужно, чтобы единицы измерения моих значений находились в одних и тех же столбцах… Итак, это появляется, когда я кодирую:
1
2
3
10
111
0
Мой код:
public void display() {
int j;
System.out.println(name);
for (j = 0; j < treesOfForest.length; j ) {
if (treesOfForest[j] != null) {
System.out.print(" ");
System.out.printf("%d",(j 1));
System.out.println( " : " treesOfForest[j]);
}
}
}
Мой ожидаемый результат:
Ответ №1:
Если вы просто хотите добиться своего интервала, одним из вариантов является использование String#format
:
int[] treesOfForest = new int[] {1, 2, 3, 10, 111, 0};
for (int j=0; j < treesOfForest.length; j ) {
System.out.println(String.format("=", treesOfForest[j]));
}
1
2
3
10
111
0
Ответ №2:
Получите размер самой длинной строки в массиве maxLength
, Или вы можете предположить, что все строки не будут длиннее заданного числа : int maxLength = 100 // as example
Затем используйте его для печати следующим образом : System.out.printf("%" maxLength "s%n", treesOfForest[j]);
public void display() {
int j;
int maxLength = 100; //
System.out.println(name);
for (j = 0; j < treesOfForest.length; j ) {
if (treesOfForest[j] != null) {
System.out.printf("%" maxLength "s%n", treesOfForest[j]);
}
}
}
Ответ №3:
Вы захотите использовать printf
так, как вы это делали, однако вам нужно указать минимальную ширину. В printf
, если указано «=», это указывает, что минимальная ширина для любого интерполируемого числа должна составлять 3 столбца. Т. е. если его меньше 3 цифр, оно будет заполнено пробелами слева. Вы также можете изменить это поведение. Например, «d», это приведет к тому, что вместо пробелов останется пробел с 0.
class Main {
public static void main(String[] args) {
int[] treesOfForest = {10,5,7,9,111};
int j;
for (j = 0; j < treesOfForest.length; j ) {
System.out.printf("= : =n", (j 1), treesOfForest[j]);
}
}
}
TL; DR используйте System.out.printf("%<min-width>d", numberToPrint);
, чтобы минимальная ширина была больше или равна большинству цифр в любом из ваших чисел.
Для получения дополнительной информации о printf
посещении.
Ответ №4:
вы можете использовать string для решения этой проблемы
public class Main {
public static void main(String[] args) {
printList();
}
public static void printList() {
int maxLen = 0;
int arr[]={1, 2, 3, 10, 111, 0};
for (int i=0 ; i<arr.length; i ) {
int len = String.valueOf(arr[i]).length();
if (maxLen < len) {
maxLen = len;
}
}
for (int i=0 ; i<arr.length; i ) {
int len = String.valueOf(arr[i]).length();
int offset = maxLen - len;
String spaces = "";
for (int j=0; j<offset; j ) {
spaces = " ";
}
System.out.println(spaces arr[i]);
}
}
}