Метод сортировки массива относительно другого массива, уже отсортированного в Java - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь сделать сортировку String[] в том же порядке, что и int[] (что является наибольшим или меньшим), используя следующий код:

public static int[] initsNew(int[] inits) {

    Arrays.sort(inits);
    int[] inits1 = new int[inits.length];

    for (int i = 0; i != inits.length; i++) {
        inits1[i] = inits[inits.length - (i + 1)];
        System.out.println(inits1[i]);
    }

    return inits;


}

public static String[] charsNew(String[] chars, int[] inits, int[] initsNew) {
    String[] chars1 = new String[chars.length];
    boolean test = false;
    for (int i = 0; i != chars.length; i++) {
        for (int j = 0; j!= chars.length && test == false; j++) {
            int k = 0;
            if (initsNew[j] == inits[k]) {
                test = true;
                chars1[j] = chars[k];
            } else {
                test = false;
                k++;
            }
            System.out.println(k);
        }
    }
    for (int i = 0; i != chars.length; i++) {
        System.out.println(chars1[i]);
    }
    return chars1;
}

Но все, что я получаю в консоль, когда я даю значения (20, 14, 16, rox, eld, mir):

16
14
0
rox
null
null

Что я делаю не так? Следует распечатать:

20
16
14
rox
mir
eld

Ответы [ 2 ]

1 голос
/ 15 января 2020

Этот код упорядочит по убыванию как массивы строки, так и примитив int

    final String[] arrayOfStrings = {"abc", "bdc", "ced", "bcd", "cde"};
    final int[] arrayOfPrimitiveInt = {1,6,2,8,4,6,3};
    Integer[] arrayOfIntegers= new Integer[arrayOfPrimitiveInt.length];
    for(int i=0; i < arrayOfPrimitiveInt.length; i++) {
        arrayOfIntegers[i] = arrayOfPrimitiveInt[i];
    }
    Arrays.sort(arrayOfStrings, Collections.reverseOrder());
    Arrays.sort(arrayOfIntegers, Collections.reverseOrder());
0 голосов
/ 16 января 2020

Я понял, что сделал неправильно, но в отличие от других случаев, когда люди понимают свою проблему, я собираюсь объяснить, что именно я сделал неправильно и как я решил проблему. Мой массив методов был написан так:

public static String[] charsNew(String[] chars, int[] inits, int[] initsNew) {
    String[] chars1 = new String[chars.length];
    boolean test = false;
    for (int i = 0; i != chars.length; i++) {
        for (int j = 0; j!= chars.length && test == false; j++) {
            int k = 0;
            if (initsNew[j] == inits[k]) {
                test = true;
                chars1[j] = chars[k];
            } else {
                test = false;
                k++;
            }
            System.out.println(k);
        }
    }
    return chars1;
}

Я понял, что помещаю al oop boolean в неправильный тестовый параметр l oop. (Я не знаю точно, как они называются, не надо мне go, это сразу после термина for или while, который содержит boolean, который должен быть правдой) I при тестировании алгоритма сортировки для позиции в массиве отсутствовал while l oop.

Мой новый код прямо здесь:

public static String[] charsNew(String[] chars, int[] inits, int[] initsNew) {
    String[] chars1 = new String[chars.length];
    boolean test = false;
    for (int i = 0; i < chars.length; i++) {
        test = false;
        int k = 0;
        for (int j = 0; j < chars.length; j++) {
            test = false;
            while (test == false) {
                if (initsNew[j] == inits[k]) {
                    test = true;
                    chars1[j] = chars[k];
                    System.out.println(chars1[k]);
                    System.out.println(k);
                    k = 0;
                } else {
                    test = false;
                    k++;
                }
            }
        }
    }
    return chars1;
}

Но спасибо за вашу помощь, ребята !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...