Вот этот код абсолютно рабочий:
public static void main(String[] args) {
try {
String str = args[0];
// Если в строке есть что-то кроме чисел и букв из диапазонов a-z A-Z, выводим ошибку
if (str.matches(".*[^0-9a-zA-Z].*")) System.out.println("incorrect");
else {
char[] symbols = str.toCharArray();
Arrays.sort(symbols);
char largestChar = symbols[symbols.length - 1]; // Самой большой символ в числе
if (largestChar < 50) System.out.println(2); // Бинарная система
else if (largestChar < 58) System.out.println(largestChar - 47); // Если цифра
else if (largestChar < 91) System.out.println(largestChar - 64 + 10); // Если большая буква
else if (largestChar < 123) System.out.println(largestChar - 96 + 10); // Если маленькая буква
}
}
catch (Exception e) {
System.out.println("incorrect");
}
}
Но валидатор его не принимает по последнему пункту. Чудом нашёл в комментариях ответ, что валидатору почему-то не нравится проверка на маленькую букву. Тогда я перевёл строку в большой регистр и убрал последний if - чудо, вывод не поменялся, а задачка прошла. Обидно, учитывая то, что кто-то другой может и не найти тот комментарий и решить, что он неправильно решил задачу.