Preciso calcular o resultado de uma expressão digitada pelo usuário conforme a prioridade de cada operador contido na expressão. A expressão será digitada em uma única linha sem espaços e terá o tamanho máximo de 30 caracteres. A expressão contém aoenas as 4 operações básicas ±*/
Aqui ninguém vai fazer por você. Se você não tem ideia de por onde começar é sinal que tem que estudar.
A
Alex_Scharf
Tenta algo assim, e melhore ele, eu compilei mas não executei, então talvez tenha alguma falha que passou desapercebido.
importjava.util.Scanner;publicclassCalc{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.println("Digite o primeiro número:");intnum=input.nextInt();System.out.println("Digite o segundo número:");intnum2=input.nextInt();System.out.println("Digite o Operador(1'+', 2'-', 3'/', 4'*')");intoperador=input.nextInt();intresultado=0;switch(operador){case1:{resultado=num+num2;System.out.println("O resultado é: "+resultado);break;}case2:{resultado=num-num2;System.out.println("O resultado é: "+resultado);break;}case3:{resultado=num/num2;System.out.println("O resultado é: "+resultado);break;}case4:{resultado=num*num2;System.out.println("O resultado é: "+resultado);break;}default:{System.out.println("Operador Inválido!");}}}}
espero ter ajudado!!
flw
Gujava
O fera, valeu mas a expressão matemática vai ser inserida de uma só vez.
Tipo o usuário não vai separar os números…
ele vai jogar a expressão todinha lá…
O que eu to enfrentando grande dificuldade é quebrar essa expressão para ler cada elemento individualmente
A
Alex_Scharf
então uma saida é usar EspressãoRegular da classe regex(se não me engano), da uma estuda nisso,
que com ela você consegue definir em qual momento você quer separar as informações passadas.
Gujava
Vou dar uma olhada nisso… Vlw!
ViniGodoy
Procure os termos “notação polonesa”, “expressão infixa”, “expressão pos fixa” e “pilha” podem te ajudar a encontrar a solução para seu problema no google.