package package2;
import java.util.Scanner;
public class fourKindsCalculate{
public static void main(String[] args) {
System.out.println("please enter a line to Calculator:");
String s = new Scanner(System.in).nextLine();
float f;
System.out.println("the calculator result:");
try {
f = opt(s);
System.out.println(f);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static float opt(String s) throws Exception{
if(s == null || "".equals(s.trim())) {
return 0f;
}
int indexOne=s.indexOf("+");
int indexTwo=s.indexOf("-");
int indexThree=s.indexOf("*");
int indexFour=s.indexOf("/");
int indexFive=s.indexOf("(");
if(indexOne==-1&&indexTwo==-1&&indexThree==-1&&indexFour==-1){
if(s.trim()==null||"".equals(s.trim())){
throw new Exception("operate error");
}
return Float.parseFloat(s.trim());
}
if(indexFive!=-1){
int indexSix=s.indexOf(")");
if(indexSix==-1){
throw new Exception("括号不匹配");
}else{
float f=opt(s.substring(indexFive+1,indexSix).trim());
s=s.replace(s.substring(indexFive,indexSix+1), String.valueOf(f));
return opt(s);
}
}
if(indexOne!=-1){
return opt(s.substring(0,indexOne))+opt(s.substring(indexOne+1,s.length()));
}
if(indexTwo!=-1){
return opt(s.substring(0,indexTwo))-opt(s.substring(indexTwo+1,s.length()));
}
if(indexThree!=-1){
return opt(s.substring(0,indexThree))*opt(s.substring(indexThree+1,s.length()));
}
if(indexFour!=-1){
return opt(s.substring(0,indexFour))/opt(s.substring(indexFour+1,s.length()));
}
return Integer.parseInt(s.trim());
}
}
结果示例(result):
please enter a line to Calculator:
(1+2*3)/2
the calculator result:
3.5