I use sort() to sort my array alphabetically, but it does so from A-Z to a-z. I try to capitalize each word beforehand, but it doesn't work unless it's being printed out, which should be happening after the sorting. At the moment, with this code, it will list the pupils with capital letters, but if it was inputted as lowercase, it will be sorted as lowercase. Putting the capitalize() in the initial for loop, right after assigning the input to the array, doesn't work. Any solutions?
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);
}
}