Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对char[]数组进行排序,不区分大小写?_Java_Arrays - Fatal编程技术网

Java 如何对char[]数组进行排序,不区分大小写?

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

我正在尝试用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 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);
}