Как разбить одномерный массив на строки? - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу разбить одномерный массив на строки.Размерность массива 50. Мне нужно вывести массив на консоль с 10 элементами на строку.(lang Java 1.8) Спасибо!

public void print() {
    for (int i = 0; i < arr.length; i++) {
        if (i<=9) {
            System.out.print(arr[i] + " ");
        }else {
            System.out.print("\r");
        }
    }
}

Пример вывода

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 
etc....

Ответы [ 8 ]

0 голосов
/ 09 декабря 2018

Если вы не возражаете против использования библиотеки Guava, вы также можете сделать это

List<Integer> myList = Arrays.asList(myArray);
System.out.println(Lists.partition(myList, 10).stream()
        .map(subList -> subList.stream()
                               .map( Object::toString )
                               .collect(Collectors.joining(" ")))
        .collect(Collectors.joining("\n")));
0 голосов
/ 08 декабря 2018

Используйте следующий код,

 public static void printResult(int[][] result)
{
    for(int i=0; i<5; i++)
    {
        for(int j=0; j<10; j++)
        {
            System.out.print(result[i][j] + ", ");
        }
        System.out.println();
    }
}

public static int[][] modifyArray( int[] singleArray )
{
    int columns = 10;
    int rows = singleArray.length/10;
    int[][] result = new int[rows][columns];

    for(int i=0; i<rows; i++)
    {
        for(int j=0; j<columns; j++)
        {
            result[i][j] = singleArray[columns*i + j];
        }
    }
    return result;
}


public static void main(String[] args)
{
    int[] singleArray = {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,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50};

    int[][] result = modifyArray( singleArray);
    printResult( result );

}
0 голосов
/ 08 декабря 2018

Посмотрите на код внизу:

   public class PrintEach10thElements {

    /**
     * @param args the command line arguments
     */
    static List<Integer> arrays = new ArrayList<>();

    public static void main(String[] args) {

        //create 50 elements in an array
        for (int i = 0; i <= 49; i++) {
            arrays.add(i);
        }

        for (int g = 0; g < arrays.size(); g++) {
            if ( arrays.get(g) % 10 != 0) {
                System.out.print(arrays.get(g) + " ");
            } else {
                System.out.println();
                System.out.print(arrays.get(g) + " ");

            }
        }

    }
}
0 голосов
/ 08 декабря 2018

Возьмите фрагменты из 10 элементов в новый массив каждый раз и напечатайте этот массив:

int count = 10;
int iterations = (arr.length / count) +  ((arr.length % count) > 0 ? 1 : 0);
for (int i = 1; i <= iterations; i++) {
    int[] slice = new int[count];
    System.arraycopy(arr, (i - 1) * count, slice, 0, i == iterations ? (array.length % count) : count);
    System.out.println(Arrays.toString(slice));
}

Приведенный выше код работает для любого значения count.

0 голосов
/ 08 декабря 2018

Вы можете видеть это с двух разных точек зрения

  1. Каждые 10 чисел выведите новую строку: когда индекс заканчивается 9, вы получаете десять элементов, поэтому вы печатаете новыйстрока println()

    public void print() {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
            if (i % 10 == 9) {
                System.out.println();
            }
        }
    }
    
  2. Печать достаточного количества строк и на каждой из них: печать 10 элементов

    public void print() {
        for (int i = 0; i < arr.length / 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.print(arr[i * 10 + j] + " ");
            }
            System.out.println();
        }
    
    }
    
0 голосов
/ 08 декабря 2018

Может быть, вы могли бы написать что-то вроде

if (i % 10 == 0)
    System.out.print("\r");
}
System.out.print(arr[i] + " ");
0 голосов
/ 08 декабря 2018

Код для любого количества элементов в строке:

public void print(int elementsPerLine) {
  for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i]);
    if (i % elementsPerLine == 0 && i > 0) {
         System.out.println();
    } else {
        System.out.print(" ");
    }
  }
}
0 голосов
/ 08 декабря 2018

Вы должны использовать оператор по модулю https://en.wikipedia.org/wiki/Modulo_operation

public void print() {
    for (int i = 0; i < arr.length; i++) {
        if (i%10 == 0) {
            System.out.print("\r");
        }else {
            System.out.print(arr[i] + " ");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...