所以,当我想调用Comparator引起的mergeSort()方法时,我的Main类出现了问题。我收到以下消息:
我不知道如何解决这个问题..请帮帮我!
注意: 不要怀疑代码中没有任何内容。由于上述问题我无法证明我的代码的功能,因此卡住了(
(我的英语不好意思)
class Algorithms
{
public static <T> void mergeSort(final T[] a, final Comparator<T> c)
{
T[] list = a;
Comparator<T> comp = c;
}
}
public class Main
{
public static void main(String[] args)
{
int[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98
Comparator<Integer> sorted = Comparator.naturalOrder();
int[] sortedList = Algorithms.mergeSort(unsortedList,sorted))
}
}
答案 0 :(得分:3)
在此代码中,Algorithms.mergeSort
调用中的类型不匹配:
int[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98 Comparator<Integer> sorted = Comparator.naturalOrder(); Algorithms.mergeSort(unsortedList, sorted))
unsortedList
的类型为int[]
,sorted
的类型为Comparator<Integer>
。要使类型匹配,您需要使用Integer[]
作为unsortedList
的类型:
Integer[] unsortedList = {4, 5, 7, 1, 98, 32}; //Expected = 1,4,5,7,32,98
另一个问题是Algorithms.mergeSort
返回void
,所以这仍然无法编译:
int[] sortedList = Algorithms.mergeSort(unsortedList, sorted);
您需要删除作业:
Algorithms.mergeSort(unsortedList, sorted);
将它放在一起,这将有效(在您实施Algorithms.mergeSort
之后):
public static void main(String[] args) {
Integer[] unsortedList = {4, 5, 7, 1, 98, 32};
Comparator<Integer> sorted = Comparator.naturalOrder();
Algorithms.mergeSort(unsortedList, sorted);
}
答案 1 :(得分:2)
使用Integer[]
代替int[]
。
答案 2 :(得分:0)
另一种可能性是在克隆上工作:
class Algorithm
{
public static <T> T[] mergeSort(final T[] a, final Comparator<T> c)
{
T[] list = a.clone();
Comparator<T> comp = c;
Arrays.sort(list, comp);
return list;
}
public static void main(String[] args)
{
Integer[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98
Comparator<Integer> sorted = Comparator.naturalOrder();
Integer[] sortedList = Algorithm.mergeSort(unsortedList,sorted);
}
}
答案 3 :(得分:0)
如果你只是想要编译的东西,你可以看一下。有一些问题:
有多种语法问题,例如缺少分号和太多的parens。
import java.util.Comparator;
class Algorithms
{
public static <T> void mergeSort(final T[] a, final Comparator<T> c)
{
T[] list = a;
Comparator<T> comp = c;
}
}
public class Main
{
public static void main(String[] args)
{
Integer[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98
Comparator<Integer> sorted = Comparator.naturalOrder();
Algorithms.mergeSort(unsortedList,sorted);
}
}