В общем, мне нужно подсчитать количество гласных букв в n введенных строках и отсортировать их по возрастанию\убыванию. Для этого, я сначала перевел String в Char, где пробежался по всем буквам и поставил счетчик, который подсчитывает кол-во гласных букв. Далее, обратно упаковал Char в String и тут мне нужно сделать сортировку, не могу разобраться как ее сделать, подскажите :)
import java.util.Scanner;
public class projFour {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int row_val = 0, g = 1, localvar = 0;
String temp;
System.out.print("Enter row value: ");
if(input.hasNextInt()){
row_val = input.nextInt();
}
String[] a = new String[row_val + 1];
String[] c = new String[row_val + 1];
System.out.println("Enter " + row_val + " lines");
for (int i = 0; i < row_val + 1; i++){
if (input.hasNextLine()){
a[i] = input.nextLine();
}
}
char[] vowels = {'a','o','i','y','u','e'};
for (int i = 1; i < row_val + 1; i++) {
char[] chars = a[i].toCharArray();
int k = 0;
for (int j = 0; j < chars.length; j++){
for (int x = 0; x < vowels.length; x++) {
if (chars[j] == vowels[x]) {
k++;
}
}
}
//System.out.println("Odd val = " + k);
String b = new String(chars);
c[g] = b;
System.out.println("String ========= " + c[g]);
if (localvar > k) {
temp = c[g - 1];
c[g - 1] = c[g];
c[g] = temp;
localvar = k;
} else {
localvar = k;
}
g++;
}
for (int i = 1; i < row_val + 1; i++) {
System.out.println("Sorted = " + c[i]);
}
}
}
Чтобы отсортировывать элементы по определенным критериям, не обязательно реализовывать алгоритм сортировки, достаточно написать лишь свой компаратор. Это делается очень просто:
// функция возвращающая количество гласных букв
Function<String, Integer> getCount = new Function<String, Integer>() {
// коллекция содержащая гласные буквы
private Set<Character> set = new HashSet<>(Arrays.asList('а', 'е', 'у', 'ы', 'о', 'я'));
@Override
public Integer apply(String s) {
int count = 0;
for (int i = 0; i < s.length(); i++)
count += set.contains(s.charAt(i)) ? 1 : 0;
return count;
}
};
Comparator<String> comparator = (s1, s2) -> Integer.compare(getCount.apply(s1), getCount.apply(s2));
List<String> stringList = Arrays.asList("ааа", "я", "вв");
// сортировка по возврастанию частоты гласных букв
// если требуется обратный порядок то нужно написать comparator.reversed()
Collections.sort(stringList, comparator);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В google maps хочу реализовать кнопку myCurrentLocationВ методе onCreate добавил следующее:
В intellij ideа, когда запущен сервер, я нажимаю обновить и табличка "Restart server" "Redeploy server", оба пересобирают артифактыМожно ли как-то обновить проект,...