Java 为什么array.sort不能通过这样的数组工作?
我大约两周前才开始编程,所以请不要太严格:) 我试图解决一个编程练习,以打印数组中的3个最大元素,但.sort方法无效 报告了一个错误,我不知道为什么。似乎我用错误的方式声明了数组,但我无法发现错误Java 为什么array.sort不能通过这样的数组工作?,java,arrays,Java,Arrays,我大约两周前才开始编程,所以请不要太严格:) 我试图解决一个编程练习,以打印数组中的3个最大元素,但.sort方法无效 报告了一个错误,我不知道为什么。似乎我用错误的方式声明了数组,但我无法发现错误 public static void main(String[] args) { int [] elements = {1, 4, 17, 7, 25, 3, 100}; int k = 3; System.out.println("Original Array: ");
public static void main(String[] args) {
int [] elements = {1, 4, 17, 7, 25, 3, 100};
int k = 3;
System.out.println("Original Array: ");
System.out.println(Arrays.toString(elements));
System.out.println(k +" largest elements of the said array are:");
Arrays.sort(elements, Collections.reverseOrder());
for (int i = 0; i < k; i++)
System.out.print(elements[i] + " ");
}
publicstaticvoidmain(字符串[]args){
int[]元素={1,4,17,7,25,3100};
int k=3;
System.out.println(“原始数组:”);
System.out.println(array.toString(elements));
所述数组的最大元素为:”;
数组.sort(元素、集合.reverseOrder());
for(int i=0;i
}因为整数是对象,也不是对象。它们需要装箱,即整数
解开
int[]元素={1,4,17,7,25,3100};
盒装
Integer[]元素={1,4,17,7,25,3100};
使用Java8流
int[]元素={1,4,17,7,25,3100};
int[]sortedUnboxed=IntStream.of(元素)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(值->值)
.toArray();
整数[]sortedBox=IntStream.of(元素)
.boxed()
.sorted(Comparator.reverseOrder())
.toArray(整数[]::新建);
int[]
作为集合。reverseOrder不适用于基元类型。请改用整数
。它将解决这个问题。看看反转顺序的定义:
它会告诉你它看起来像这样:
public static <T> Comparator<T> reverseOrder()
公共静态比较器reverseOrder()
是通用模板。原语不能用作泛型类型,请参阅
int
是基本类型。幸运的是,Integer
是一个围绕int
的包装类,您可以将其用作泛型。剩下的是学生的家庭作业
我感觉到你的痛苦,
int
不能是泛型,但它就是这样。其他答案涉及如何反转原始int
数组,但根据你的问题,似乎你根本不需要反转数组
通过更改的条件,只需从末尾开始遍历数组:
public static void main(String[] args)
{
int [] elements = {1, 4, 17, 7, 25, 3, 100};
int k = 3;
System.out.println("Original Array: ");
System.out.println(Arrays.toString(elements));
System.out.println(k +" largest elements of the said array are:");
Arrays.sort(elements);
for (int i = elements.length - 1; i > elements.length - k; i--)
System.out.print(elements[i] + " ");
}
输出:
Original Array:
[1, 4, 17, 7, 25, 3, 100]
3 largest elements of the said array are:
100 25 17
如果您想坚持使用int,只需对其进行排序并打印出最后三个:
public static void main(String[] args)
{
int [] elements = {1, 4, 17, 7, 25, 3, 100};
int k = 3;
System.out.println("Original Array: ");
System.out.println(Arrays.toString(elements));
System.out.println(k +" largest elements of the said array are:");
Arrays.sort(elements);
for (int i = 0; i < 3; i++)
System.out.print(elements[elements.length - 1 - i] + " ");
}
publicstaticvoidmain(字符串[]args)
{
int[]元素={1,4,17,7,25,3100};
int k=3;
System.out.println(“原始数组:”);
System.out.println(array.toString(elements));
所述数组的最大元素为:”;
数组。排序(元素);
对于(int i=0;i<3;i++)
System.out.print(elements[elements.length-1-i]+“”);
}