как исправить код, который отказывается показывать результат? - PullRequest
0 голосов
/ 10 мая 2019

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

Я перепробовал все возможные альтернативные методы в соответствии снасколько я знаю.

class mark25 {
    public static void main(String args[]) {
        int arr[] = {
            1,
            2,
            3,
            4,
            5
        };
        int len = arr.length;
        boolean flag = true;
        while (flag) {
            for (int i = 0; i < len - 1; i++) {
                int temp = arr[i];
                arr[i] = arr[len - 1];
                arr[len - 1] = temp;
                if (i > len - 1) {
                    flag = false;
                }
            }

        }
        for (int j = 0; j < len; j++) {
            System.out.println(arr[j]);
        }
    }
}

Я ожидаю, что код покажет обратный порядок массива "arr".

Ответы [ 2 ]

0 голосов
/ 10 мая 2019
int[] arr = {5,0,6,7,8};    
ArrayUtils.reverse(arr);   
for(int i =0 ; i < arr.length ; i++){
    System.out.println(arr[i]);
}

Это еще один подход для обращения массива. Для использования ArrayUtils загрузите commons.lang3.jar и добавьте его в путь сборки. Надеюсь, это поможет.

0 голосов
/ 10 мая 2019

Это потому, что ваш код "застрял в бесконечном цикле"

Ваше if(i>len-1) условие противоречит условию вашего условия цикла for i<len-1. Таким образом, переменная-флаг никогда не получает значение FALSE и, следовательно, никогда не заканчивается

Кроме того, есть еще пара ошибок.

В вашем цикле for вы меняете значение индекса i на индекс len-1, но значение переменной len не меняется.

Вот решение с некоторыми изменениями:

  • Вам не нужно иметь вложенный цикл.

  • Вам придется уменьшать значение len после каждого обмена значения.


class mark25 {
    public static void main(String args[]) {
        int arr[] = {
            1,
            2,
            3,
            4,
            5
        };
        int len = arr.length;
        boolean flag = true;
        int i = 0;
        while (flag) {
            int temp = arr[i];
            arr[i] = arr[len - 1];
            arr[len - 1] = temp;
            len--;
            i++;
            if (i > len - 1) {
                flag = false;
                break;
            }

        }
        for (int j = 0; j < arr.length; j++) {
            System.out.println(arr[j]);
        }
    }
}

Надеюсь, это поможет.

...