Delimiter-matching using Stack in Java Is this code okay?

import java.util.Stack;

public class DelimiterMatching {

    public static void main(String[] args) {

        final String input = "[(A+B)]";

        delimiterCheck(input);
    }

    public static void delimiterCheck(String input) {
        if (input.length() == 0) {
            System.out.println("String is empty");
        }
        Stack&lt;Character&gt; theStack = new Stack&lt;&gt;();
        for (int i = 0; i &lt; input.length(); i++) {
            char individualChar = input.charAt(i);
            if (individualChar == '{' || individualChar == '['
                    || individualChar == '(') {
                theStack.push(individualChar);

            } else if (individualChar == '}' || individualChar == ']'
                    || individualChar == ')') {
                if (!theStack.isEmpty()) {
                    char individualCharRight = theStack.pop();
                    if ((individualChar == '}' &amp;&amp; individualCharRight != '{')
                            || (individualChar == ')' &amp;&amp; individualCharRight != '(')
                            || (individualChar == ']' &amp;&amp; individualCharRight != '[')) {
                        System.out.println("Error at index " + i);
                    }
                }
            }
        }
        if (!theStack.isEmpty()) {
            System.out.println("Error in delimiter");
        }
    }
}
Technically the code is broken: it will accept a ")" string as valid (test at line 25 doesn't flag an error if the stack is empty).

Naming

I think you got a bit overboard. Names shall be descriptive, which doesn't imply that they shall be long. individualCharRight is definitely confusing. I'd suggest something like innermost perhaps.

delimiterCheck also doesn't reflect the nature of the function. It is supposed to test a validity of nested brackets; isNested could be more to the point.

Error reporting

For a low level function I'd recommend to avoid printing anything, but return an error code instead. There are 2 clearly defined error conditions (an unbalanced closing bracket and an unclosed opening one); the method should return an error code and a position of an offending bracket. The latter observation means that a bracket position should be recorder at the stack along with the bracket itself.

Interface

As mentioned above, the method should return an error code and an error location.