Что имеется ввиду под сортировкой по алфавиту? В методе isGreaterThan используется метод String compareTo. Почитал - поковырял его дебагером - судя по всему логика его такова, что символ в верхнем регистре для него меньше аналогичного в нижнем регистре. Соответственно, отсортированный массив будет иметь вид : строки с большой буквы в алфавитном порядке -> строки с маленькой буквы в алфавитном порядке. Как по мне - это немного не в алфавитном порядке. То-есть нужно сравнивать не учитывая регистр. Из того что пока-что надумал - двумерный массив, где для каждой строки будет свой массив с длиной равной длине строки, булевый, например. По каждой строке пройтись посимвольно и по индексам расставить в массиве true или false в зависимости от регистра. Таким образом сохраниться изначальное состояние массива строк. Потом все перегнать в нижний регистр - отсортировать. После вернуть большие буквы куда нужно. Но это выглядит как-то громоздко. Может есть какой-то способ полегче? В какую сторону стоит смотреть?
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] array = new String[20];
for (int i = 0; i < array.length; i++) {
array[i] = reader.readLine();
}
sort(array);
for (String x : array) {
System.out.println(x);
}
}
public static void sort(String[] array) {
//напишите тут ваш код
for(int i=0; i<array.length; i++)
{
for(int j=i; j<array.length; j++)
{
if(isGreaterThan(array[i],array[j]))
{
String tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
}
//Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b) {
return a.compareTo(b) > 0;
}
}
Input
qwer Qwer asd ASD Dsa zxc Cvd Hsd gfy Udf
Output
ASD Cvd Dsa Hsd Qwer Udf asd gfy qwer zxc