Вопрос...
В данной задаче я решил использовать сортировку пузырьком в методе public static void sort(String[] array) , так как в условии требуется использовать метод public static boolean isGreaterThan(String a, String b).
Но когда я запускаю код в IDEA у меня бесконечный цикл ввода строк, хотя я никак не трогал цикл находящийся в main отвечающий за ввод 20 строк...
Интересно то, что когда я убрал сортировку пузырьком, а воспользовался более приемлемым методом: Arrays.sort(array); - Цикл отвечающий за ввод строк работает нормально, т.е. дает ввести всего 20 строк.
Это какой то баг? Или каким-то неизвестным образом цикл в методе public static void sort(String[] array) влияет на цикл в main?
package com.javarush.task.task08.task0830;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
/*
Задача по алгоритмам
*/
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 k = array.length - 1; k > 0; k--){
for (int j=0; j < k; k++){
if (isGreaterThan(array[j],array[j+1])){
String tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
//Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b) {
return a.compareTo(b) > 0;
}
}