У Вас парсинг - посимвольный. Это неверно.
for(int i = 0; i < input.length(); i++) {
ch = input.charAt(i);
//if we works with figures (10-th notation)
if(ch >= '0' && ch <= '9') stack.push((int) ch - '0');
else {
Нужно его делать по-операторно-операндным.
Т.е., если символ -
НЕ ОПЕРАТОР ("+","-" и т.д.), значит
это ЧАСТЬ операнда и нужно "собирать" текущий операнд, пока не встретится оператор.
UPD: В целом, смысл "собирать" и когда встретится оператор - извлечь:
for(j=0; j<input.length(); j++) // Для каждого символа
{
ch = input.charAt(j); // Чтение символа
theStack.displayStack(""+ch+" "); // *диагностика*
if(ch >= ‘0’ && ch <= ‘9’) // Если это цифра
operand+=ch; //Собираем строку (операнд)
else // Если это оператор
{
theStack.push( (float)operand ); // Занести в стек, как число с плавающей точкой
operand=''; //Обнуляем строку операнда
num2 = theStack.pop(); // Извлечение операндов
num1 = theStack.pop();
switch(ch) // Выполнение арифметической
{ // операции