É o seguinte estou recebendo uma entrada de dados(dados.txt) de um arquivo de texto que contem o seguinte formato:
2 + 3 * 5
( 2 + 3) * 10
( 3 + 4 - 2) * ( 3 + 10 / 2 )
obs: há espaços entres os itens
preciso agora calcular cada expressão que represanta cada linha do arquivo .txt porem não estou conseguindo.
[code]mport java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Calc_Programa {
public static void main(String[] args) {
Pilha p = new Pilha(10);
try {
BufferedReader in = new BufferedReader(new FileReader("dados.txt"));
String linha;
int l = 0;
double d;
while ((linha = in.readLine()) != null) {
System.out.print("Linha " + ++l + ": ");
System.out.println(linha);
}
in.close();
} catch (IOException e) {
System.out.println("O arquivo\"dados.txt\" não foi encontrado!!!!!");
}
}
}[/code]
Do modo como está feito acredito que esteja fazendo implicitamente um casting para string.
Não seria o caso de voce colocar todo o conteúdo de cada linha como entrada de uma função que retornasse como saída ( return ) a propria entrada ?
É apenas um palpite…
+++
velho vc tem que quebrar sua string
eu fiz um teste aqui dessa maneira funcionou pq eu sei os valores que vem
mais quem sabe não abre sua mente flw
[code] public static void main(String[] args) {
String teste = “5 + 10 * 8”;
int op1 = teste.indexOf("+");
String val1 = teste.substring(op1 - 2, op1);
String val2 = teste.substring(op1 + 1, op1+4);
System.out.println(val1+"-"+val2);
}[/code]
Não é um exemplo trival, tem que usar técnica de parser, fazer cálculos dos níveis mais internos para os mais externos.
Recomendo a leitura do livro: A Arte do Java. Nele aborda um capítulo todo para isso.
Fala brow,
Pelo que entendi, voce quer ler uma string como “(3 + 5) * 2”, e executar essa expressao, gerando 16.
No Java nao existe algo como a funcao eval() do Javascript (ou se existe, nao conheco).
Entao voce teria que fazer o que o amigo acima falou, analisar a linha, quebrar os fatores e levar
em consideracoes precedencia de operadores (* e / vem antes de + e -) e de parenteses…
Abraco.
Grinvon, acho que você me entendeu errado, eu sei que meu exemplo não vai resolver o problema dele, mais
meu intuito foi abrir a mente dele com um exemplo para ele buscar outras formas baseada no meu exemplo ou
nos de outras pessoas …
É uma pena que não tenha esse recurso.
Aqui os caras já implementaram isso :
http://w3eval.calcsharp.net/W3Eval.pdf
+++
No projeto towel há um avaliador de expressões bastante poderoso:
Você também pode usar a integração que o java tem com linguagens de script.
Agora, se isso é um trabalho de faculdade, e seu objetivo é calcular expressões no braço, procure pela teoria de pilha, notação infixa e pós-fixa, notação polonesa, e logo vc acabará caindo na teoria que te leva à resposta.