我如何排序char []数组不区分大小写?

时间:2014-04-16 21:05:59

标签: java arrays

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

我可以用什么方法来做这件事?

2 个答案:

答案 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);