我正在尝试用Java对char[]
数组进行排序。
我尝试使用List
,但它没有完美运作
我也尝试使用Arrays.sort(dizimiz,String.case_insensive_order)
,但是我收到了错误。
这是我的代码:
Scanner sc=new Scanner(System.in);
System.out.println("Please enter text:");
String str=sc.nextLine();
// toCharArray() splits the string into a character array
char[] chars=str.toCharArray();
Arrays.sort(chars);
for (char c : chars) {
System.out.println(c);
}
我可以用什么方法来做这件事?
答案 0 :(得分:2)
比较器String.CASE_INSENSITIVE_ORDER
仅用于字符串,但您尝试将其与char数组一起使用。如果要使用它,则必须将字符串转换为字符串数组(每个字符串包含一个字符)。
String[] chars = str.split("");
Arrays.sort(chars, String.CASE_INSENSITIVE_ORDER);
for (String c : chars) {
System.out.println(c);
}
答案 1 :(得分:0)
如果你不关心这个案子,你可以改变
char[] dizimiz = str.toCharArray();
到
char[] dizimiz = str.toLowerCase().toCharArray();
这将完成你的问题
如何对char []数组进行排序不区分大小写?
如果我在这里缺少别的东西,请告诉我,我会更新我的答案。
根据下面的评论,我为您提供了一个粗略的代码,用适当的外壳对输出进行排序和保留。
char[] dizimiz = str.toCharArray();
char[] lc = str.toLowerCase().toCharArray();
char temp;
Boolean done;
if (lc.length > 1) do {
done = true;
for (int i = lc.length - 1; i > 0; i--) {
if (lc[i] < lc[i - 1]) {
temp = lc[i - 1];
lc[i - 1] = lc[i];
lc[i] = temp;
temp = dizimiz[i - 1];
dizimiz[i - 1] = dizimiz[i];
dizimiz[i] = temp;
done = false;
}
}
} while (!done);