Thre are two minor bugs in the code. First, you are skipping the last character in the expression - which, as it turns out, is a right parenthesis:
while(infix.length() > 1){ //should be infix.length() > 0
// ....
}
Second, your code used 'x'
as the multiplication operator, while your expression uses '*'
.