Ajuda Dividindo String de um índice para outro

3 respostas
C

Preciso separar um string de um índice conhecido ate outro índice conhecido...
Estou fazendo uma calculadora e preciso que o calculo seja feito na ordem como foi
escrito tipo "2*1+1/2" preciso que ele faça a multiplicação dps a soma e dps a divisão
espero te sido claro... Obrigado a quem ajudar vou botar o codigo do que eu tava fazendo...

package Prova;

/**
 *
 * @author Renato
 */
public class Testes extends Calculadora {

    public Testes() {
        
        int i = teste.indexOf("+");
        int x = teste.indexOf("-");
        int y = teste.indexOf("/");
        int z = teste.indexOf("*");

        if (i > x && i > y && i > z) {
        
        }
    }
}

3 Respostas

rafael.luc

Não e fácil de fazer isso, a maioria opta por um teclado virtual. Tambem pode ser feito pelo teclado do PC tratando sua entrada. Por exemplo:

tecla == (0,9)
int num = tecla;

tecla ==(caracter)
char operando = tecla;

Precisa especificar melhor a operação, o que é feito primeiro ?
“2*(1+1/2)”
“21+(1/2)"
"(2
1)+1/2”

davidbuzatto

Oi Chakal,

Fazer a interpretação de expressões não é tão simples assim.
Você levou em consideração os parênteses? E números com mais de um dígito? O sinal de subtração pode ser um operador unário também (2 + -2).
Você até consegue fazer algo com essa abordagem, mas ela não é a mais apropriada.

Dê uma olhada aqui: http://www.guj.com.br/java/257479-analisador-sintaticosemantico-em-java

[]'s

C

davidbuzatto:
Oi Chakal,

Fazer a interpretação de expressões não é tão simples assim.
Você levou em consideração os parênteses? E números com mais de um dígito? O sinal de subtração pode ser um operador unário também (2 + -2).
Você até consegue fazer algo com essa abordagem, mas ela não é a mais apropriada.

Dê uma olhada aqui: http://www.guj.com.br/java/257479-analisador-sintaticosemantico-em-java

[]'s

E ta complicado, tenho que fazer essa calculadora com padrão de projeto e tenho que guardar um resultado após o calculo ser efetuado
para que o usuário posso voltar um calculo antes ja vi até qual o padrão que e para ser usado que e o Memento…
Eu separei os tratamentos só para orientar os pensamentos:

Tratamentos:

Não pode ter sinal de ?*? dps ?/? ou um sinal de ?+?ou?-? sem um n° após eles

Guardar um resultado…Para consulta…

Apos o sinal de ?=? termina a conta…

//Apos inserir um n° começar teste;

SE (iniciar com um sinal ?*?,?/? )

{

Não deixar botar;

}

SENÃO
SE ( inserir um n° ){

SE (Inserir mais um numero){
 Concatenar;
} 

SE  (inserir ?.?) {
	Concatenar;

SE (inserir algum n°){
	Concatenar;

SENAO {
	Atribui ?0? dps do ?.?;
    }

//Apos inserir um sinal começar teste;
SE (inserir um sinal) {

SE(?/?){
TESTE :n° após  não pode ser 0 
}

SE (?++?,?--?) {
TESTE: n° após deve ter um n° 
}
Criado 25 de novembro de 2011
Ultima resposta 25 de nov. de 2011
Respostas 3
Participantes 3