Java вывести многомерный массив

How to print Two-Dimensional Array like table

If you don’t mind the commas and the brackets you can simply use:

System.out.println(Arrays.deepToString(twoDm).replace("], ", "]\n")); 
public class FormattedTablePrint < public static void printRow(int[] row) < for (int i : row) < System.out.print(i); System.out.print("\t"); >System.out.println(); > public static void main(String[] args) < int twoDm[][]= new int[7][5]; int i,j,k=1; for(i=0;i<7;i++) < for(j=0;j<5;j++) < twoDm[i][j]=k; k++; >> for(int[] row : twoDm) < printRow(row); >> > 

Output

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 

Of course, you might swap the 7 & 5 as mentioned in other answers, to get 7 per row.

Is there a way to use printf so I can print a table of strings with variable sizes and still have the rows/columns aligned? (e.g. the array might be <, > )

You need to print a new line after each row. System.out.print(«\n») , or use println , etc. As it stands you are just printing nothing — System.out.print(«») , replace print with println or «» with «\n» .

I’ve just replaced it and now i have and output like: 1 2 3 5 6 7 8 etc but its only vertical. what i want is like a table. anyway, thanks for the reply.

He said to put the println() after every ROW, not after every print you do. In other words, after executing the second for() loop but before allowing the first to loop around.

Читайте также:  Menu sub menu php

Make sure your println is in the correct scope. Your first print statement concatenates everything on the same line, so you need to make sure your line break happens outside the scope of the «j» for loop.

By the way. How should i make it like print 1-7 first then 8-14 etc. Im really having a hard time understanding this.

You could write a method to print a 2d array like this:

//Displays a 2d array in the console, one line per row. static void printMatrix(int[][] grid) < for(int r=0; r> 

A part from @djechlin answer, you should change the rows and columns. Since you are taken as 7 rows and 5 columns, but actually you want is 7 columns and 5 rows.

int twoDm[][]= new int[5][7]; for(i=0;i <5;i++)< for(j=0;j<7;j++) < System.out.print(twoDm[i][j]+" "); >System.out.println(""); > 

@kix: Updated my answer with array declaration as per your expectation. int twoDm[][]= new int[5][7];

@Siva Charan — it’s working now but still displaying in 1 one row. what i want is displaying it in 5 rows without using grid. thanks!

I’ll post a solution with a bit more elaboration, in addition to code, as the initial mistake and the subsequent ones that have been demonstrated in comments are common errors in this sort of string concatenation problem.

From the initial question, as has been adequately explained by @djechlin, we see that there is the need to print a new line after each line of your table has been completed. So, we need this statement:

However, printing that immediately after the first print statement gives erroneous results. What gives?

This is a problem of scope. Notice that there are two loops for a reason — one loop handles rows, while the other handles columns. Your inner loop, the «j» loop, iterates through each array element «j» for a given «i.» Therefore, at the end of the j loop, you should have a single row. You can think of each iterate of this «j» loop as building the «columns» of your table. Since the inner loop builds our columns, we don’t want to print our line there — it would make a new line for each element!

Once you are out of the j loop, you need to terminate that row before moving on to the next «i» iterate. This is the correct place to handle a new line, because it is the «scope» of your table’s rows, instead of your table’s columns.

And you can see that this new line will hold true, even if you change the dimensions of your table by changing the end values of your «i» and «j» loops.

Источник

Двумерные массивы в Java

Вы уже знаете что такое массивы в Java и как с ними работать?

1. Если ответ «нет» — прочтите сначала статью «Массивы в Java»

2. Если ответ «да» — читайте статью ниже о двумерных массивах.

Поскольку Вы уже знаете что такое массивы и как с ними работать, наверняка, для Вас не проблема:

Например:
Ну, а что же с двумерным массивом?

Самый, наверное, распространенный пример двумерного массива — это матрица. Если кто забыл что такое матрица, напоминаем:

array_vertex-academy-2

В матрице есть строки и столбцы . На пересечении их стоит определенное значение.

array_vertex-academy-3

Напоминаем, что счет в массивах начинается с 0 .

— число 1 это пересечение 0 — строки и 0 — столбца
— число 2 это пересечение 0 — строки и 1 — столбца
— число 3 это пересечение 1 — строки и 0 — столбца
— число 4 это пересечение 1 — строки и 1 — столбца

Ниже приводим пример объявления двумерного массива на языке программирования Java:

Или можно сразу объявить содержимое массива:

При инициализации двумерного массива, можно заметить отличие от обычного массива. В двумерном массиве Вы используете две квадратные скобки вместо одной.

  • в первой вы пишите количество строк
  • во второй вы пишите количество столбцов

При заполнении двумерного массива Вы указываете в этих скобках строку и столбец.

Например
А как же вывести двумерный массив в консоль?

Вывод двумерного массива с помощью цикла for сильно отличается от вывода обычного массива (когда используется цикл for).

Чтобы вывести в каждую ячейку двумерного массива значение, не достаточно использовать один цикл for. Необходимо использовать два цикла for, при этом один из них находится в другом.

Почему так?

Ранее упоминалось, что двумерный массив состоит из строк и столбцов. Каждая ячейка такого массива — это пересечение какой-то строки и столбца.

1. Так что первый цикл for перебирает каждую строку двумерного массива (которая содержит какое-то количество столбцов).

2. А второй цикл for перебирает столбцы в этой строке. Таким образом можно заполнить значением каждый элемент двумерного массива.

Например:

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите:

Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

Источник

Распечатать массив в Java

Напишите программу для печати одномерных и многомерных массивов на Java.

Как печатать одномерные массивы?

1. Цикл for или расширенный цикл for

Наивным подходом будет использование цикла for, как показано ниже:

Мы можем заменить приведенный выше цикл for улучшенным циклом for, как показано ниже:

2. Arrays учебный класс — toString() или же deepToString() метод

Другим простым решением было бы просто использовать Arrays.toString(Object[] a) метод, который вернет строковое представление содержимого указанного массива. Мы также можем использовать Arrays.deepToString(Object[] a) который возвращает строковое представление “глубокого содержимого” указанного массива, т. е. если массив содержит в качестве элементов другие массивы, строковое представление включает их содержимое и т.д.

результат:

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

3. Apache Commons Lang – ArrayUtils.toString() метод

Arrays.toString() а также Arrays.deepToString() будет работать только на Java SE 5 и выше. Apache Commons предоставляет ArrayUtils.toString() метод, аналогичный Arrays.deepToString() и выводит массив в виде строки. Ниже приведены его отличия от Arrays.deepToString() :

  1. Строковое представление элементов массива заключено в фигурные скобки. <> в отличие от квадратных скобок [] .
  2. Соседние элементы разделяются только запятой (а не пробелом).
  3. Предусмотрена поддержка печати многомерных массивов.

4. Поток Java 8

В Java SE 8 и выше мы можем использовать потоки для печати массива. Ниже приведены две терминальные операции, которые мы можем применить к потоку для печати массива.

  1. Получить итератор в поток Iterator itr = Arrays.stream(arr).iterator(); .
  2. С использованием Stream.forEach
    Arrays.stream(arr).forEach(System.out::println); .

Следующая программа демонстрирует это:

5. Arrays.asList() или Guava Ints.asList()

Для массива непримитивных объектов мы можем использовать Arrays.asList() как показано ниже: Arrays.asList() возвращает список фиксированного размера, поддерживаемый указанным массивом. Этот подход не рекомендуется, так как он включает создание списка в качестве промежуточного шага.

Похожий на Arrays.asList() метод в JDK, библиотека Google Guava имеет Ints.asList() который также возвращает список фиксированного размера.

Источник

Оцените статью