Как распечатать список чисел в одном столбце на единицу измерения, используя println?

#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]);
        }
    }
}