【问题标题】:Reverse an int array [duplicate]反转一个int数组[重复]
【发布时间】:2019-03-04 07:44:50
【问题描述】:

我想在 java 中反转一个 int 数组,这是代码,但它会引发错误 arrayOutOfBound 异常。

class reverse_number {
    public static void main(String[] args) {
        int ar[]={1,3,4,2};
        int ar1[]=new int[4];

        for(int i=0;i<ar.length;i++) {
            ar1[i++]=ar[ar.length-1];
        }

        for(int i=0;i<ar1.length;i++) {
            System.out.print(ar1[i]);
        }
    }
}

【问题讨论】:

  • 试试ar1[i]=ar[ar.length-i-1]
  • 除了错误之外,逻辑也有缺陷,因为您从ar分配了相同的项目

标签: java arrays function


【解决方案1】:
public static void main(String[] args){
    ...
    int reveArr[] = new int[arr1.length];

    for(int i = 0 ; i <arr1.length;i++){
        reveArr[i] =arr1[arr1.length-i-1];
    }
    ...
}

您将i 增加两次。当您尝试使用超出其容量的索引访问数组时(当i 在最后一次迭代中,并且您访问arr1[i++] 时,您正在访问的索引超过了arr1 的长度),它势必会给您ArrayIndexOutOfBoundsException。

【讨论】:

    【解决方案2】:

    你在做

    for(int i=0;i<ar.length;i++)
    

    然后在这个循环中你又增加了i

    ar1[i++]
    

    这个没必要,用i就行了

    【讨论】:

    • 你不妨建议修复来自ar的分配
    • 嗯,要留点东西给 OP 学习
    【解决方案3】:

    请试试这个。

    class reverse_number {
        public static void main(String[] args) {
            int ar[] = { 1, 3, 4, 2 };
            int ar1[] = new int[4];
            int count = 0;
            for (int i = ar.length - 1; i >= 0; i--) {
                ar1[count++] = ar[i];
    
            }
            for (int i = 0; i < ar1.length; i++) {
                System.out.print(ar1[i]);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多