如何对数组进行排序而忽略大小写?

pla*_*nto 2 java arrays sorting

我使用sort()按字母顺序对数组进行排序,但它从AZ到az进行排序.我尝试事先将每个单词大写,但除非打印出来,否则它不起作用,这应该在排序后发生.目前,使用此代码,它将使用大写字母列出学生,但如果它以小写形式输入,则将其排序为小写.在将输入分配给数组之后,将capitalize()放在初始for循环中是行不通的.有解决方案吗

import java.util.Scanner;
import java.util.Arrays;

public class Pupils {
public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    boolean loop = true;
    int names = 0;

    String[] ay = new String[1000];

    for(int i = 0; loop == true; i++) {
            System.out.println("Enter name: ");
            ay[i] = scan.nextLine();
            names++;
            if (ay[i].equals("0")) {
                loop = false;
                ay[i] = " ";
        }
    }

    String[] aay = new String[names - 1];

    for(int i = 0; i < aay.length; i++) {
        aay[i] = ay[i];
    }

    if (names == 1) {
        System.out.print("There are no people in our class.");
    } else if (names == 2) {
        System.out.print("The person in our class is ");
    } else {
        System.out.print("The people in our class are ");
}
    Arrays.sort(aay);
    for(int i = 0; i < names - 1; i++) {
        if(i == names - 2) {
            System.out.print(capitalize(aay[i]) + ".");
        } else if (i == names - 3) {
            System.out.print(capitalize(aay[i]) + " and ");
        } else {
            System.out.print(capitalize(aay[i]) + ", ");
        }
    }

}
public static String capitalize(String line)
{
  return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}

}
Run Code Online (Sandbox Code Playgroud)

小智 6

使用Arrays.sort()比较器怎么样?请注意,定义了String一个合适的比较器,因此:

Arrays.sort(aay, String.CASE_INSENSITIVE_ORDER);
Run Code Online (Sandbox Code Playgroud)

应该做的工作.