Java错误:无法从void转换为int []

时间:2012-11-14 16:12:36

标签: java

我不明白为什么java认为数组“thisRow”在传递到Arrays.sort(thisRow)时是无效的。 “thisRow”对我来说似乎是一个int []。这是什么问题?

错误消息:“类型不匹配:无法在Test.mySort(Test.java:57)上从void转换为int []”

private static int[][] mySort(int[][] anArray) {
    for(int i = 0; i < anArray.length; i++){
        int thisRow[] = getRow(anArray, i);
        int[] sorted = Arrays.sort(thisRow);
    }
}

//This method will get the specified row out of the array.
private static int[] getRow(int[][] anArray, int row) {
    int thisRow[] = new int[anArray[row].length];
    for(int j = 0; j < anArray[row].length; j++){
        thisRow[j] = anArray[row][j];
    }
    return thisRow;
}

3 个答案:

答案 0 :(得分:12)

Arrays.sort返回void而不是int[]类型。

根据javadoc

  

将指定的整数数组按数字升序排序。该   排序算法是一种改编的快速排序,改编自Jon L. Bentley   和M. Douglas McIlroy的“工程排序功能”,   软件实践与经验,卷。 23(11)P。1249-1265(11月   1993年)。该算法在许多数据集上提供n * log(n)性能   导致其他快速降级降级为二次性能

替换

int[] sorted = Arrays.sort(thisRow);

Arrays.sort(thisRow);

答案 1 :(得分:3)

Arrays.sort就地对数组进行排序(通过改变现有对象),并且不返回任何内容。因此你应该替换

int[] sorted = Arrays.sort(thisRow);

只需

Arrays.sort(thisRow);

答案 2 :(得分:1)

Arrays#sort不会返回int[],它会返回void,它会对源数组本身进行排序。

  

将指定的整数数组按数字升序排序。该   排序算法是一种改编的快速排序,改编自Jon L. Bentley   和M. Douglas McIlroy的“工程排序功能”,   软件实践与经验,卷。 23(11)P。1249-1265(11月   1993年)。该算法在许多数据集上提供n * log(n)性能   导致其他快速降级降级为二次性能。