Заполнить многомерный массив значениями из другого массива - PullRequest
0 голосов
/ 05 февраля 2019

Мне нужно написать метод, который будет возвращать многомерный массив, состоящий из элементов из данного массива, каждая строка должна иметь числа с соответствующим количеством цифр, например, первая строка должна иметь числа с одной цифрой, номера второй строкис двумя цифрами, третий номер строки с 3 цифрами.

Мне удалось отсортировать данный массив.Я включил часть моей жалкой попытки подсчитать, сколько цифр имеет число.Не могу понять, что делать дальше.

Ценю любую помощь.

class test {
    public static void main(String [] args){
        int arr[] = {20,11,100,9,3,200,4000};
        method(arr);
    }

    public static int[][] method(int arr[]){
        int arr1[][] = new int[50][50];
        for(int j=0;j<arr.length-1;j++){
            int minIndex = j;
            for(int i=j+1;i<arr.length;i++){
                if(arr[minIndex]>arr[i]){
                    minIndex = i;
                }
            }
            int temp = arr[minIndex];
            arr[minIndex] = arr[j];
            arr[j] = temp;
        }

        int k =0;
        while(k<arr.length) {
            int counter = 0;

            while (arr[k] != 0) {
                arr[k] /= 10;
                counter++;
            }
            k++;
        }

    }
}

1 Ответ

0 голосов
/ 05 февраля 2019

Это можно сделать намного проще, используя List, так как добавить элемент в массив непросто.Прочтите комментарии в приведенном ниже коде, чтобы увидеть, как это работает

public static void main(String args[]) throws Exception {

    int arr[] = {20,11,100,9,3,200,4000};

    int[][] sortedArray = new int[50][]; // fixing the size to 50 so we can go up to 50 digits, that could also be dynamic but it would make the code heavier
    int nbDigits;
    int[] tmpArray;
    for(int i : arr) {
        // get the number of digits
        nbDigits = nbDigits(i);

        // retrieve the array to add the integer to
        tmpArray = sortedArray[nbDigits-1];

        // add the integer to the array
        tmpArray = addToArray(tmpArray, i);

        // stick back your array in the multidimensional array
        sortedArray[nbDigits-1] = tmpArray;
    }
}

Этот метод добавляет элемент в указанный массив.

private static int[] addToArray(int[] array, int n) {
    int[] returnArray;
    if(array == null) {
        returnArray = new int[1];
        returnArray[0] = n;
    } else {
        // copy the array in an other array 1 bigger
        returnArray = Arrays.copyOf(array, array.length + 1);
        // add your number at the end
        returnArray[array.length] = n;
    }
    return returnArray;
}

Этот метод вычисляет количество цифр целого числа, делая его строкой и возвращая его длину

private static int nbDigits(int n) {
    return String.valueOf(n).length();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...