交换数组中的第一个和最后一个值(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]
)