如何修复拒绝显示结果的代码?

时间:2019-05-10 03:50:57

标签: java infinite-loop

我正在尝试反转数组的元素。我的代码没有编译错误或运行时错误,但仍然拒绝显示结果。

根据我的知识,我尝试了所有可能的替代方法。

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 :(得分:0)

这是因为,您的代码“陷入了无限循环”

您的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]);
        }
    }
}

希望有帮助。

答案 1 :(得分:0)

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并将其添加到您的构建路径中。希望它会有所帮助。