Problemas com operações negativas

Pessoal, tenho um problema simples que quero resolver mas que tem me dado um certo trabalho para tentar resolver. Quero poder fazer esses tipos de conta no java: 2-(-2) | 2+(-2) | 2*(-2) | 2/(-2).
Se alguém souber como resolver fico grato.

Você pode fazer isso de várias formas, depende a exigência do professor. Acredito que o jeito mais simples é usar o avaliador de expressões do JavaScript.

Exemplo:

    public static void main(String[] args) {
		try {
			String[] expressoesParaTeste = "2-(-2) | 2+(-2) | 2*(-2) | 2/(-2)".split("\\|");
			for (String expressao : expressoesParaTeste) {
				System.out.println(expressao + " -> " + evaluate(expressao, Integer.class));
			}

		} catch (ScriptException | ClassCastException e) {
			e.printStackTrace();
		}
	}

	public static <T extends Object> T evaluate(String expression, Class<T> returnType) throws ScriptException {
		ScriptEngineManager mgr = new ScriptEngineManager();
		ScriptEngine engine = mgr.getEngineByName("JavaScript");
		T result = (T) engine.eval(expression);
		return result;

	}

Resultado;

2-(-2) -> 4
2+(-2) -> 0
2*(-2) -> -4
2/(-2) -> -1

Nessa outra postagem você pode ver a implementação manual de um parser. Note que é mais complicado, tendo que ler caractere a caractere, identificando se é uma operação (ex. “-”, “+”) e controlando os parênteses.

Obrigado deu certo!