Java循环来计算所有运算符
我需要修改这段代码,以便使用操作顺序,并能够乘法和除法,但我不知道从哪里开始。我知道if对加法和减法有效,但我只需要弄清楚如何使它乘和除Java循环来计算所有运算符,java,loops,operators,expression,evaluation,Java,Loops,Operators,Expression,Evaluation,我需要修改这段代码,以便使用操作顺序,并能够乘法和除法,但我不知道从哪里开始。我知道if对加法和减法有效,但我只需要弄清楚如何使它乘和除 import java.util.Scanner; class Expressions { String e; void setExpressions(String exp){ e =exp; } int evaluate1(){ //e has +. -. only, single digit numbers int r = e.c
import java.util.Scanner;
class Expressions {
String e;
void setExpressions(String exp){
e =exp;
}
int evaluate1(){
//e has +. -. only, single digit numbers
int r = e.charAt(0)-'0';
int l = e.length();
for(int i=1; i<=l-1; i++ )
if (e.charAt(i) == '+')
r += (e.charAt(i+1)-48);
else
r -= (e.charAt(i+1)-'0');
return r;
}
int evaluateAS(){
//e has +, -, only, multiple digit numbers
int r = 0;
int n = 0;
int op = '+'; //+, -
for(int i=0; i<e.length(); i++ ){
if (e.charAt(i) == '-' || e.charAt(i) == '+'){
if (op == '+')
r += n;
else
r -= n;
n = 0;
op = e.charAt(i);
}
else //digits
n = n*10+(e.charAt(i) - '0');
}
if (op == '+')
r += n;
else
r -= n;
return r;
}
}
public class Runner {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Expressions myE = new Expressions();
System.out.println("Enter E: ");
String e = in.next();
myE.setExpressions(e);
//int r = myE.evaluate1();
int r = myE.evaluateAS();
System.out.println(e+" = "+ r);
}
}
import java.util.Scanner;
类表达式{
字符串e;
void setExpressions(字符串exp){
e=exp;
}
int evaluate1(){
//e只有+.-.个数字
int r=e.charAt(0)-'0';
int l=e.长度();
for(int i=1;i乘法(或除法)和加法需要优先级,这意味着您不能继续从左到右计算表达式
通常,计算解析器使用反向波兰语符号()来表示数学表达式。wikipedia文章包含了许多信息以及如何使用这些信息
通常,您将使用调车场算法转换中缀(通常)将符号转换为RPN,然后您将看到计算RPN中表示的表达式是多么容易。当您尝试使其同时进行乘法和除法运算时,您遇到了什么困难?现在它所能做的只是加法和减法运算,但我不知道从何处开始使其同时进行乘法和除法运算。因为这看起来像是您的第一个问题,我将给你一个提示:“我需要添加代码来完成…”问题要么离题,要么离主题很近。对于这样的问题,最好是你自己诚实地尝试,如果你不明白为什么你的尝试不起作用,就在这里发布。