My guess is that there won't be many people wantinmg to go thru your code line by line debugging it (me included), so here's the next best thing - some help for you to debug it yourself.
What I don't see in the code is a whole load of
System.out.println(key info about what's going on);
at all the important stages of your code.
Without that kind of info, all you know is "it don't work". Put in the prints to see if (a) the right branches are being taken and (b) the data values involved are exactly what you expect them to be.
eg at line 59 print "ret" to see if it's right.
at line 73 print numA and numB, etc.
Put enough in and it will suddenly become blindingly obvious to you where its going wrong. When you've fixed it don't delete the prints, just comment them out - they'll come in useful again next time it stops working.