Java 如何对char[]数组进行排序,不区分大小写?
我正在尝试用Java对Java 如何对char[]数组进行排序,不区分大小写?,java,arrays,Java,Arrays,我正在尝试用Java对char[]数组进行排序 我尝试使用列表,但效果并不理想。 我还尝试使用Arrays.sort(dizimiz,String.case\u insensive\u order),但出现了一个错误 以下是我的代码: Scanner sc=new Scanner(System.in); System.out.println("Please enter text:"); String str=sc.nextLine(); // toCharArray() splits the
char[]
数组进行排序
我尝试使用列表
,但效果并不理想。我还尝试使用
Arrays.sort(dizimiz,String.case\u insensive\u 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);
}
我可以用什么方法来做这件事?如果你不关心这个案例,你可以改变
char[] dizimiz = str.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);
char[]dizimiz=str.toCharArray();
char[]lc=str.toLowerCase().toCharArray();
焦炭温度;
布尔完成;
如果(lc.length>1)do{
完成=正确;
对于(int i=lc.length-1;i>0;i--){
if(lc[i]
比较器字符串。不区分大小写的顺序
仅用于字符串,但您尝试将其与字符数组一起使用。如果要使用它,必须将字符串转换为字符串数组(每个字符串包含一个字符)
使用String.equalsIgnoreCase()“它工作得不完美”和“我出错”不是问题描述。(用任何语言)它怎么不起作用?出现了什么错误?为什么要对字符数组中的字符进行排序?为什么不把它们放在一个盒子里?不,不会的。如果OP有b,A,A,C,他想要A,A,b,C作为结果,而不是A,A,b,C,这是真的。我想要A,A,b,C。我怎么能这样排序呢?@JBNizet我更新了代码来实现这一点。我知道有更简单的方法,但我想看看在for循环中是如何完成的。@user3542379我更新了我的答案,它将以您想要的方式输出。@codecamp:您试图重新实现排序算法,但您的算法不正确。您最好将字符数组转换为字符数组,使用标准算法和自定义比较器对其进行排序,然后将字符数组转换回字符数组。这当然比我的答案简单得多。但我想知道哪一个答案在100万个字符时更有效?
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);
String[] chars = str.split("");
Arrays.sort(chars, String.CASE_INSENSITIVE_ORDER);
for (String c : chars) {
System.out.println(c);
}