Ошибка: Exception in thread "main" java.util.NoSuchElementException
Помогите пожалуйста решить проблему. Во время исполнения программы у меня возникает такая ошибка:
For input string: "5+5"Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayDeque.removeFirst(ArrayDeque.java:285)
at java.util.ArrayDeque.pop(ArrayDeque.java:522)
at com.company.awlmax.Compute.calculate(Compute.java:45)
at com.company.awlmax.Main.main(Main.java:16)
В коде:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
Compute compute = new Compute();
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String strInputInt;
System.out.print("Input: ");
strInputInt = br.readLine();
System.out.print(Compute.calculate(strInputInt));
} catch (IOException ex) {
System.out.print(ex.getMessage());
}
}
}
И
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Compute {
public static Integer calculate(String strInputInt) {
int iFirst = 0, iLast = 0;
String sTemp;
Deque<Integer> stack = new ArrayDeque<Integer>();
StringTokenizer tokenizer = new StringTokenizer(strInputInt);
while (tokenizer.hasMoreTokens()) {
try {
sTemp = tokenizer.nextToken().trim();
if (1 == sTemp.length() && isInputOperator(sTemp.charAt(0))) {
iFirst = stack.pop();
iLast = stack.pop();
switch (sTemp.charAt(0)) {
case '+':
iFirst += iLast;
break;
case '-':
iFirst -= iLast;
break;
case '*':
iFirst += iLast;
break;
case '/':
iFirst += iLast;
break;
default:
throw new Exception("Nan " + sTemp);
}
stack.push(iFirst);
} else {
iFirst = Integer.parseInt(sTemp);
stack.push(iFirst);
}
} catch (Exception ex) {
System.out.print(ex.getMessage());
}
}
return stack.pop();
}
private static boolean isInputOperator(char cAtrib) {
switch (cAtrib) {
case '+':
case '-':
case '*':
case '/':
return true;
}
return false;
}
}