【发布时间】:2013-12-24 13:19:20
【问题描述】:
如何让代码读取用户输入的表达式中的多个操作数。
如果我必须阅读它们如何找到不同的运算符和操作数,这里是我制作的基本表达式计算器的代码,它能够读取表达式并仅计算一个操作数和两个运算符
例如
如果输入是 2+3
结果它会给我5.0
但是
如果输入是 2 + 3,即有空格,则它根本不提供任何输出,即使在有空格的情况下如何使其正常工作。
import java.util.Scanner;
public class Calc {
public static void main(String args[]){
int j=0;
float op1=0,op2=0,result=0;
Scanner inp=new Scanner(System.in);
System.out.println("Sir,Please enter the expression");
String exp1=inp.next();
String exp = exp1.replaceAll(" ","");
for(int i=0;i<exp.length();i++){
if(exp.charAt(i)=='+'||exp.charAt(i)=='-'||exp.charAt(i)=='*'||exp.charAt(i)=='/'){
if(exp.charAt(i)=='+'){
i=j;
op1=Float.parseFloat(exp.substring(0, j+1));
op2=Float.parseFloat(exp.substring(j+2,exp.length()));
result=op1+op2;
System.out.println(result);
break;
}
if(exp.charAt(i)=='*'){
i=j;
op1=Float.parseFloat(exp.substring(0, j+1));
op2=Float.parseFloat(exp.substring(j+2,exp.length()));
result=op1*op2;
System.out.println(result);
break;
}
if(exp.charAt(i)=='-'){
i=j;
op1=Float.parseFloat(exp.substring(0, j+1));
op2=Float.parseFloat(exp.substring(j+2,exp.length()));
result=op1-op2;
System.out.println(result);
break;
}
if(exp.charAt(i)=='/'){
i=j;
op1=Float.parseFloat(exp.substring(0, j+1));
op2=Float.parseFloat(exp.substring(j+2,exp.length()));
if(op2==0){
System.err.println("Division by zero is not possible");
break;
}
else{
result=op1/op2;
System.out.println(result);
break;
}
}
}
}
}
}
【问题讨论】:
-
你喜欢做一个计算器来计算像 2+3-5*2 这样的字符串吗?
-
是的,我想做一个这样的计算器
-
查看我对问题的回答
-
请注意,
new ScriptEngineManager().getEngineByName("JavaScript").eval("2+3-5*2");可以完成这项工作。
标签: java