Дак почему вылетает ошибка, почему он не хочет хавать число c отрицательным знаком и делать с ним минус со вторым числом? (-2 - 2) вернёт вылет приложения
потому что оператор в этом случае равен "-"
а теперь внимательней посмотрите на эту строку "-2 - 2" что ввёл пользователь и найдите в ней оператор "-". Нашли? Какой у него индекс? Правильно ноль. теперь сделаем
(dis.substring(0, dis.indexOf(operator) - 1)); // берём первое число от начала строки до оператора(оператор не берём)
возьмём подстроку начиная с 0 символа до -1.
Забавно правда? :)