交换数组中的第一个和最后一个值(JAVA)

交换数组中的第一个和最后一个值(JAVA),java,arrays,Java,Arrays,我相信代码是有效的,但测试人员的代码不是,我不知道为什么。我试图交换数组中的第一个值和最后一个值 public class ArrayMethods { private int[] values; public ArrayMethods(int[] initialValues) { values = initialValues; } public void swapFirstAndLast() { int lastvalplace = values.length;

我相信代码是有效的,但测试人员的代码不是,我不知道为什么。我试图交换数组中的第一个值和最后一个值

public class ArrayMethods {

 private int[] values;
 public ArrayMethods(int[] initialValues) {
    values = initialValues;
  }
 public void swapFirstAndLast() {
    int lastvalplace = values.length;
    int firstval = values[0];
    values[0] = values[lastvalplace];
    values[lastvalplace] = firstval;
 }

 public static void main(String[] args) {
     ArrayMethods initialValues = new ArrayMethods(int[] 50, 32, 4, 9, 2);
     swapFirstAndLast = new swapFirstAndLast(values);
 }

}

这是交换+0索引数组的基本情况

int lastElement = values[values.length-1];
values[values.length-1] = values[0];
values[0] = lastElement;
您的代码生成
ArrayOutOfBoundsException
,它提供了一个stacktrace,可以打印出问题所在的行以及索引过大的信息。它还提供索引

你得到了这样的东西:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26
at ArrayMethods.swapFirstAndLast(ArrayMethods.java:10)
记住,Java中数组的最后一个元素是
array[array.length-1]

还有一个问题。你的主要意见是:

ArrayMethods initialValues = new ArrayMethods(new int[]{50, 32, 4, 9, 2});
initialValues.swapFirstAndLast();

“我相信代码是有效的”您应该测试它并确定,而不仅仅是假设。还有,“测试代码”会发生什么?你说的“不工作”是什么意思?我猜它甚至不会编译,是吗?数组中的最后一个元素是
array[array.length-1]
(不像代码中那样
array[array.length]