我试图创建一个简单的方法将数组中的第一个元素移动到数组的后面。
这是我的代码
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似乎没有检测到我的代码出错,但是当我运行它时,我收到错误文本
"线程中的异常" main" 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)"
任何提示?
答案 0 :(得分:2)
数组表示程序保留用于存储一系列数字或数组所有其他内容的内存段。因此,数组不能调整大小;你不能超过你保留的内存段的末尾,因为另一个程序可能正在使用该内存。您的解决方案不起作用,因为它尝试获取第一个元素并将其放在数组结尾之后,这是超出范围的。相反,你必须记住第一个元素,然后将除第一个空格之外的每个元素移动到左边以在数组的末尾创建空间,然后你可以将第一个元素放在数组的末尾。
答案 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};
您的交换功能出现问题。您必须创建临时变量,以便可以将数组的第一个元素与last替换。另外,数组的最后一个元素是array [array.length-1]
其次,我使用 Enhanced For-loop 打印出数组。希望这有帮助
答案 2 :(得分:0)
数组的大小基本上是静态的。 为此,您可以使用动态的ArrayList。
答案 3 :(得分:-1)
错误是由于行:
array [0] = array [array.length];
如果要访问数组的最后一个元素并将其填充到数组[0],请使用下面的
array [0] = array [array.length-1];
答案 4 :(得分:-1)
使用array[0] = array[array.length - 1];
访问Array
中的最后一项。