我能够对数组进行排序,并能够在不同的步骤中比较数组,但是当我尝试在同一行中执行这两个操作时,我收到错误。从Java文档中,sort方法应该返回一个传递给它的相同类型的数组,而equals方法应该返回一个布尔值。
我在这里误解/误用了什么?
以下是我测试情况的代码:
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr1 = {2,4,5,3,1};
int[] arr2 = {4,3,2,1,5};
if (Arrays.equals(Arrays.sort(arr1), Arrays.sort(arr2))) { // Problem line
System.out.println("Same contents");
}
else {
System.out.println("Different contents");
}
}
}
据我所知,我创建了2个具有相同内容的数组。然后我调用Arrays.equals(),对于它的2个参数,我传入在每个数组上调用Arrays.sort()的结果。
尝试编译时,出现以下错误:
test.java:9: error: 'void' type not allowed here
if (Arrays.equals(Arrays.sort(arr1), Arrays.sort(arr2))) {
^
test.java:9: error: 'void' type not allowed here
if (Arrays.equals(Arrays.sort(arr1), Arrays.sort(arr2))) {
^
2 errors
shell returned 1
答案 0 :(得分:3)
Arrays.sort()
方法不返回数组;
这样做:
Arrays.sort(arr1);
Arrays.sort(arr2);
if (Arrays.equals(arr1, arr2)) {
// rest of code
答案 1 :(得分:2)
Arrays.sort返回void
类型。您需要使用有效的数组类型 Arrays.equals(int[] a,
int[] a2)