Como adicionar elementos específicos em uma pilha?

5 respostas
alomurilo

Por exemplo, se o usuário digitar no JTextField {1 + 2 + [3 + 4 - (5 +6)]}, quero que só o que vá para a pilha seja {}, [] e ().

Como faço isso?

Obrigado.

5 Respostas

ruivo

Digamos que você está armazenando a resposta do JTextField numa variável chamada "resposta".

for(int i = 0; i < resposta.length() ; i++ ) { if(!Character.isDigit(resposta.charAt(i))) { //empilha resposta.charAt(i) } }

Acredito que isso resolva.

alomurilo

Ajuda sim, obrigado.

Mas o que exatamente faz este método isDigit (ou a negação dele, nesse caso)? Ele vai pegar tudo que nao for número? Se sim, acho que não funciona pra mim, pois também não posso pegar os operadores matemáticos.

Obrigado.

alomurilo

Resolvido. Só usei o método String.valueOf(char) e testei com um equals().

Valeu.

alomurilo

Mas agora estou com outro problema.

Quero que, se existir um caracter ‘)’ na lista, o programa remova-o e remova o caracter ‘(’ junto. Como faço isso?

Obrigado.

josemanzoli

Você pode fazer assim!

String literal = "{1 + 2 + [3 + 4 - (5 +6)]}";
        String literalAlterado = literal.replaceAll("[+-=*\\s]", "");
        System.out.println(literalAlterado);

Retirando o () também

String literalAlterado = literal.replaceAll("[+-=*\\s()]", "");
Criado 19 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 5
Participantes 3