Уже несколько часов ломаю голову. Не выполняется 3е условие. Вероятно ошибка где-то в строках 60-70, но в чем именно?
package com.javarush.task.task09.task0930;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Задача по алгоритмам
Задача: Пользователь вводит с клавиатуры список слов (и чисел).
Слова вывести в возрастающем порядке, числа - в убывающем.
1. Программа должна считывать данные с клавиатуры.
2. Программа должна выводить данные на экран.
3. Выведенные слова должны быть упорядочены по возрастанию (используй готовый метод isGreaterThan).
4. Выведенные числа должны быть упорядочены по убыванию.
5. Метод main должен использовать метод sort.
6. Метод sort должен использовать метод isGreaterThan.
7. Метод sort должен использовать метод isNumber.
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) {
break;
}
list.add(s);
}
String[] array = list.toArray(new String[0]);
sort(array);
for (String x : array) {
System.out.println(x);
}
}
public static void sort(String[] array) {
// напишите тут ваш код
int max;
String min;
String t;
for (int i=0; i<array.length; i++) {
if(isNumber(array[i])==true){
max=Integer.parseInt(array[i]);
for (int j=i; j<array.length; j++){
if (isNumber(array[j])==true && max<Integer.parseInt(array[j])){
max=Integer.parseInt(array[j]);
t=array[i];
array[i]=array[j];
array[j]=t;
}
}
}
}
for (int i=0; i<array.length; i++) {
if(isNumber(array[i])==false) {
min = array[i];
for (int j=i; j<array.length; j++){
if (isNumber(array[j]) == false && isGreaterThan(min,array[j])==true) {
t = array[i];
array[i] = array[j];
array[j] = t;
}
}
}
}
}
// Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b) {
return a.compareTo(b) > 0;
}
// Переданная строка - это число?
public static boolean isNumber(String s) {
if (s.length() == 0) {
return false;
}
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if ((i != 0 && c == '-') // Строка содержит '-'
|| (!Character.isDigit(c) && c != '-') // или не цифра и не начинается с '-'
|| (chars.length == 1 && c == '-')) // или одиночный '-'
{
return false;
}
}
return true;
}
}