package javaLearning;
import java.util.Arrays;
import java.util.Collections;
public class myarray {
public static void name() {
String hello;
hello = "hello, world";
int hello_len = hello.length();
char[] hello_array = new char[hello_len];
hello.getChars(0, hello_len, hello_array, 0);
Arrays.sort(hello_array, Collections.reverseOrder());
}
“myarray”类是在测试类的main方法中定义的。 当我尝试反转数组时,为什么它会给我一个编译错误?
答案 0 :(得分:6)
Collections.reverseOrder()
返回Comparator<Object>
。带比较器的Arrays.sort
不适用于基元
这应该有效
import java.util.Arrays;
import java.util.Collections;
public class MyArray {
public static void name() {
String hello = "hello, world";
char[] hello_array = hello.toCharArray();
// copy to wrapper array
Character[] hello_array1 = new Character[hello_array.length];
for (int i = 0; i < hello_array.length; i++) {
hello_array1[i] = hello_array[i];
}
// sort the wrapper array instead of primitives
Arrays.sort(hello_array1, Collections.reverseOrder());
}
}
答案 1 :(得分:2)
我得到的错误(假设原帖有错字)是Collections.reverseOrder()
返回Comparator<Object>
。
Arrays.sort
(带隔离区)仅为Object的后代定义,因此不适用于基本类型。
答案 2 :(得分:0)
您忘记声明haa = hello.getChars(0, hello_len, hello_array, 0);
答案 3 :(得分:0)
haa未在您向我们展示的代码中定义。这是一个编译错误。
答案 4 :(得分:0)
使用Arrays.sort按升序排序,然后反转数组的元素(可以用简单的循环内联完成)。
答案 5 :(得分:0)
首先,代码不遵循JAVA语言的标准。 类名应始终以UPPER大小写开头,数组的 sort()不应将基元值列表作为参数。将'char'更改为'Character',然后使用 Arrays.sort 方法