Ну как базовые два коммента (которые на самом деле не сильно повлияют на что то): не делать второй массив (зачем?) и уж тем более не делать второй массив String. Все таки я бы ожидал от функции что она или в том же массиве все переставит, или вернет новый массив интов.
Еще для тренировки я бы предложил попробовать заменить преобразование в строку математическими операциями.
UPD. Собственно функцию то вы не написали ;-) Выделите код в функцию
Ну ошибки особой на скрине и не видно - просто не выбрано что запускать.
Но 99% что у вас так ничего не получится. Декомпилируются приложения весьма плохо, и чтобы РАЗОБРАТЬ что то, нужно сначала уметь это СОБРАТЬ - т.е. навыки разработки необходимы. А с играми все еще хуже - там нативный код, и его вы не декомпилировали.
Начните с изучения навыка гуглежа. Например java roadmap.
Но нет такой професси - "знающий джаву". Она используется много где, и в каждой сфере куча сопутствующих технологий
Я вот нифига не знаю как там в джаве устроены потоки ввода-вывода, но ОЧЕНЬ ПОХОЖЕ, что в BufferedReader ваш попадает результат System.out.println.
Для очень быстрой проверки замените
System.out.println(Arrays.toString(filename.split(".part")));
на что то вроде
System.out.println("WTF");
и посмотрите что будет в массиве
Отладку в зубы и дебажить.
Передаете в фактор 0. Срабатывает if. Дальше он вызывает factor с -1. И так до stack overflow.
У факториала нуля обычно своя обработка ;-)
Если вы изучаете - то написанный кем то код вам будет только во вред.
Напишите сами, напишите алгоритм, и т.д. А тут если что подскажут.
Но писать код тому кто УЧИТСЯ - медвежья услуга