Почему выходит эта ошибка?
Да я поменял метод проверки числа - я его оптимизировал(как мне кажется), но в идеи работает как часы, а тут ошибка?
package com.javarush.task.task09.task0930;
import java.io.*;
import java.util.*;
/*
Задача по алгоритмам
*/
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) {
isGreaterThan ("а", "б"); // ничего не делает
ArrayList<Integer> number = new ArrayList<Integer>();
ArrayList<String> words = new ArrayList<String>();
ArrayList<String> any = new ArrayList<String>();
//проверяем слово или цифра - записываем каждый в свой лист
for (int i = 0; i<array.length; i++) {
boolean numb = isNumber(array[i]);
if(numb==true) {number.add(Integer.parseInt(array[i]));}
if(numb==false) {words.add(array[i]);}
}
//сортируем числа по возростанию
Collections.sort(number);
//переварачиваем - соритровка по убыванию
for (int j = 0; j<number.size(); j++) {number.add(number.remove(number.size()-1-j));}
//сортируем слова по возростанию
Collections.sort(words);
//нужен, чтобы не улететь за границы массива
int count = 0;
int count2 = 0;
//добавляем в массив any слово + число
for (int f = 0; f<array.length; f++){
boolean numb = isNumber(array[f]);
if (numb==false) {any.add(words.get(count2));count2++;}
if (numb==true) {any.add(Integer.toString(number.get(count))); count++;}
}
//переводим лист в аррай
for (int i = 0; i<array.length; i++) {array[i] = any.get(i);}
}
// нужен только для валидатора
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;}
try{int checks = Integer.parseInt(s);}
catch (Exception e) {return false;}
return true;}
}