The error is the following:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
Let's look at it closely at the exception message.
You're indexing a string with an invalid index. This could be a negative number, or longer or equal to the actual number of characters stored in the string.
Let's see the call stack.
You can see that your call originated from the bottom to the top: main(), A(), E(), O() then the exception was actually thrown in String.charAt(). So you look at your own code, what your last call was and investigate there:
So look at the code:
if (s.charAt (i) == '+' || s.charAt (i) == '-' )
What could be possibly wrong here? Well, if your original input is empty (""), then you're trying to access the 0th character, which does not exist, hence the exception is raised.
How do I know this? Well, I looked at your code and quickly deduced that in the main you set s to empty string (unless your program has arguments specified).
Then you can verify the theory by going to the line 113, and add some logging to see if you're indeed trying to access an invalid index:
System.out.println("i: " + i);
I provided some valid arguments: "three=1+2", and now there is no exception on line 113. However, your code does not work correctly, as the statement should be part of the language, but your program says it is not.