【问题标题】:Method for moving an element in an array移动数组中元素的方法
【发布时间】:2014-12-24 01:03:50
【问题描述】:

我正在尝试创建一个简单的方法来将数组中的第一个元素移动到数组的后面。

这是我的代码

public class Ex5_ShiftLeft {    
    public static void main(String[] args) {
    int[] a = new int[] {6, 2, 5, 3};
    swap (a);

    }

    public static void swap(int[] array){
        array[0] = array[array.length];
        System.out.println(Arrays.toString(array));
    }
}

Eclipse 似乎没有检测到我的代码错误,但是当我运行它时,我得到了错误文本

“线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常: 4 在 apollo.exercises.ch04_loops.Ex5_ShiftLeft.swap(Ex5_ShiftLeft.java:19) 在 apollo.exercises.ch04_loops.Ex5_ShiftLeft.main(Ex5_ShiftLeft.java:1)"

有什么建议吗?

【问题讨论】:

标签: java arrays methods


【解决方案1】:

数组表示您的程序保留的一段内存,用于存储一系列数字或您的数组具有的任何其他内容。因此,数组无法调整大小;您不能超过您保留的内存段的末尾,因为另一个程序可能正在使用该内存。您的解决方案不起作用,因为它尝试获取第一个元素并将其放在数组末尾之后,这超出了范围。相反,您必须记住第一个元素,然后将除第一个空格之外的每个元素向左移动以在数组末尾创建空间,然后您可以将第一个元素放在数组末尾。

【讨论】:

    【解决方案2】:

    我认为你是初学者,所以我会说只要坚持下去,你一定会进步的。我为您改进了以下代码:

    public class Ex5_ShiftLeft {    
       public static void main(String[] args) {
         int[] a =  {6, 2, 5, 3};
         swap (a);
    }
    
    public static void swap(int[] array){
        int temp = array[0]
        array[0] = array[array.length-1];
        array[array.length-1]
    
        for(int x : array){
           System.out.println(x+" ");
        }
      }
    }
    

    变化: 你可以这样声明一个数组: int[] myArray = {6,2,5,3};

    您的交换功能有问题。您必须创建临时变量,以便可以将数组的第一个元素与最后一个元素交换。此外,数组的最后一个元素是 array[array.length-1]

    其次,我使用了一个增强的 For-loop 来打印出数组。希望这会有所帮助

    【讨论】:

    • 对不起,swap函数的最后一部分应该是array[array.length-1] = temp;
    • 谢谢你!请问为什么我们必须创建一个临时变量? array[0] 本身不是一个变量吗?
    • 如果你拿第一个元素说这是最后一个元素,你会从哪里得到最后一个元素说它现在是第一个元素。您必须将它存储在一个临时位置,检索它并说它现在是第一个元素
    【解决方案3】:

    数组的大小基本上是静态的。 为此,您可以使用动态的ArrayList。

    【讨论】:

      【解决方案4】:

      错误是因为行:

      数组[0] = 数组[array.length];

      如果要访问数组的最后一个元素并将其填充到数组 [0] 中,请在下面使用

      数组[0] = 数组[array.length-1];

      【讨论】:

      • 正确,但没有像他写的那样解决问题。
      【解决方案5】:

      使用array[0] = array[array.length - 1]; 访问Array 中的最后一项。

      【讨论】:

      • 正确,但没有像他写的那样解决问题。
      猜你喜欢
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多