#java #arrays #multidimensional-array
#java #массивы #многомерный массив
Вопрос:
Существует ли альтернативный способ печати элементов строк многомерного массива в Java? У меня возникли проблемы с тем, как печатать строки элементов многомерного массива, поскольку требования совершенно разные.
Например, вместо:
1 2
3 4
5 6
Результат будет:
Contents of row 1 : 1 2
Contents of row 2 : 3 4
Contents of row 3 : 5 6
Вот мой код, который я пытался выполнить
"Contents of row " (i 1) " : " arr[i][j] "
но это не совсем соответствует тому, к чему я стремился. Вывод становится:
Contents of row 1 : 1 Contents of row 1 : 2
Contents of row 2 : 3 Contents of row 2 : 4
import java.util.Scanner;
public class TestH13 {
public static void main(String args[]) {
// initialize here.
int row, col, i, j;
int[][] arr = new int[100][100];
Scanner input = new Scanner(System.in);
// enter row and column for array.
System.out.print("How many rows: ");
row = input.nextInt();
System.out.print("How many columns: ");
col = input.nextInt();
// enter array elements.
for (i = 0; i < row; i ) {
for (j = 0; j < col; j ) {
System.out.print("Enter element a[" i "][" j "] : ");
arr[i][j] = input.nextInt();
}
}
// print the array elements
System.out.println("Elements in the array");
for (i = 0; i < row; i ) {
for (j = 0; j < col; j ) {
System.out.print(
"Contents of row " (i 1) " : " arr[i][j] " ");
}
System.out.println();
}
}
}
Ответ №1:
Просто переместите "Contents of row: n"
часть из внутреннего цикла:
for (i = 0; i < row; i ) {
System.out.print("Contents of row " (i 1) " :");
for (j = 0; j < col; j ) {
System.out.print(" " arr[i][j]);
}
System.out.println();
}
Ответ №2:
во-первых, я изменил местоположение инициализации 2d-массива после получения количества строк и столбцов, во-вторых, я разделил ваш раздел печати на 2 части, одну при вводе строки и вторую в каждом столбце:
int row, col, i, j;
Scanner input = new Scanner(System.in);
// enter row and column for array.
System.out.print("How many rows: ");
row = input.nextInt();
System.out.print("How many columns: ");
col = input.nextInt();
int[][] arr = new int[row][col];
// enter array elements.
for (i = 0; i < row; i ) {
for (j = 0; j < col; j ) {
System.out.print("Enter element a[" i "][" j "] : ");
arr[i][j] = input.nextInt();
}
}
// print the array elements
System.out.println("Elements in the array");
for (i = 0; i < row; i ) {
System.out.print("Contents of row " (i 1) " : ");
for (j = 0; j < col; j ) {
System.out.print(arr[i][j] " ");
}
System.out.println();
}
Ответ №3:
Вы можете обрабатывать строки следующим образом:
int[][] arr = {
{1, 2},
{3, 4},
{5, 6}};
IntStream
// iterate over indices of the rows
.range(0, arr.length)
// for each row
.mapToObj(i -> Arrays
// iterate over elements of the row
.stream(arr[i])
// string representation of the element
.mapToObj(String::valueOf)
// join contents of the row into one
// line with a space " " delimiter
// and a certain prefix and suffix
.collect(Collectors.joining(
" ", // delimiter
"Contents of row " (i 1) " : ", // prefix
"" // suffix
)))
// output line by line
.forEach(System.out::println);
Contents of row 1 : 1 2
Contents of row 2 : 3 4
Contents of row 3 : 5 6