• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Equation and the corresponding result

 
Ranch Hand
Posts: 88
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi
Assume that i have two variables

int x1 = 5
int x2 = 10;
and i want to get the result of x1+x2 and store the value in one more int variable x3.So basically i would have
int x3 = x1+x2;
But the problem is the equation x1+x2 or x1*x2 or x1/x2 etc is known to the program only at run time that is the user enters that input.
How do i do this in java like change the equation of x3 based on the user input.Any kind of help would be greatly appreciated.Thanks.
Surya
 
Bartender
Posts: 2205
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You will have to build your own parser, which can take an input string like "5+10" or "6*3", and parse each token, obtaining operands and operators, then apply semantic logic to process those operators and operands - you're basically building a mini-grammar.
If your input strings are very simple, you can just hack something together using a StringTokenizer, looking for a number followed by a math symbol (+,-,/,*) and then another number; if you use an int code to signify the operator then you can write a switch statment to do the actual calculation. For example, say you can parse out the numbers 5 and 10, and the operator "+". Then your logic would be:
int op1 = getOp1(); //5
int op2 = getOp2(); //10
int operator = getOperator(); //let 1 = "+"
int result;
switch(operator){
case 1: result = op1 + op2;
case 2: result = op1 - op2;
case 3: result = op1 * op2;
case 4: result = op1 / op2;
}
For more complicated input strings, you'll have to read up on compiler/parser theory and build your own grammar. There's a book called "Building a parser in java" that might help you.
Good luck!
[ March 10, 2002: Message edited by: Rob Ross ]
[ March 10, 2002: Message edited by: Rob Ross ]
 
Surya Bahadur
Ranch Hand
Posts: 88
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Rob
Thanks a lot for the input it was really useful,but i think i need to indeed write some parser.Let's see how it works out.
Surya
 
author
Posts: 1436
6
Python TypeScript Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think you could use some dynamic code generation. Have a look at my friend Norman's article on this issue's JDJ:
http://www.sys-con.com/java/articleprint.cfm?id=1307
 
reply
    Bookmark Topic Watch Topic
  • New Topic