3 回答
TA贡献1835条经验 获得超7个赞
您的 Max.max 方法更改了数组 - 以 . 开头的 3 行int tmp =
。
您的问题的根源可能是不了解引用类型。 tmpArray = score
不会制作数组的单独副本score
——您只有对同一个数组的两个引用。这个概念是 Java 编程的基础。
TA贡献1833条经验 获得超4个赞
int[]是对象,因此在 Java 中是通过引用传递的。当您在Max#max(int[])方法中执行以下操作时:
int[] tmpArray;
tmpArray = score;
两者tmpArray和score都将持有相同的引用,因此当您交换 中的值时tmpArray,score-array 也将被修改。
您必须为 , 创建一个新的整数数组tmpArray,然后复制这些值。最简单的是以下两种之一:
int[] tmpArray = score.clone();
// or:
int[] tmpArray = Arrays.copyOf(score, score.length);
我建议第二个,.clone()通常用于其他目的。
TA贡献1836条经验 获得超5个赞
int max (int[] score) {
int[] tmpArray;
tmpArray = score;
}
score是对数组对象的引用。在这里,您创建对现有数组的新引用。要修复它,只需创建一个新的数组对象:
int max(int[] score) {
int[] tmpArray = Arrays.copyOf(score, score.length);
}
添加回答
举报