返回传递的字符串的double值

时间:2014-01-23 13:55:03

标签: java parsing return double

创建一个名为parseEqn的方法,该方法将接收1个String变量并返回传递给它的表达式的double值。

parseEqn("123+23") → 146.0
parseEqn("3+5") → 8.0
parseEqn("3-5") → -2.0

这是我到目前为止所做的:

public double parseEqn(String str) {
   StringTokenizer st = new StringTokenizer(str,"+-/*%",true);
   String first = st.nextToken();
   String op = st.nextToken();
   String second = st.nextToken();

   double ff = Double.parseDouble(first);
   double ss = Double.parseDouble(second);

   double answer;

   if (op.equals("+")){
   answer= ff+ss;}
   else if (op.equals("-")){
   answer= ff-ss;}
   else if (op.equals("/")){
   answer= ff/ss;}
   else (op.equals("*")){
   answer= ff*ss;}

   return answer;
  1. 我一直收到错误语法错误,插入“AssignmentOperator ArrayInitializer”来完成ArrayInitializerAssignement .... 这是什么意思?

  2. 我需要对循环做什么才能使其正常工作?我可以手动输入说ff + ss,该方法将正常工作,但我似乎无法创建一个循环来检查字符串中的哪个运算符,然后传回答案。

  3. 注意:即时通讯非常紧张,非常感谢帮助。一个直截了当的答案/解释会非常有帮助......而不是那些超级模糊的“哦,它不难......”类型的东西......

1 个答案:

答案 0 :(得分:1)

它的工作正常,只是很少的修改。

检查上一个条件。

else if(op.equals("*")){answer= ff*ss;}

并将double answer初始化为0。

以防检查

import java.util.StringTokenizer;
public class Car {
    public double parseEqn(String str) {
           StringTokenizer st = new StringTokenizer(str,"+-/*%",true);
           String first = st.nextToken();
           String op = st.nextToken();
           String second = st.nextToken();
           double ff = Double.parseDouble(first);
           double ss = Double.parseDouble(second);
           double answer = 0;
           if (op.equals("+")){
           answer= ff+ss;}
           else if (op.equals("-")){
           answer= ff-ss;}
           else if (op.equals("/")){
           answer= ff/ss;}
           else if(op.equals("*")){
           answer= ff*ss;}
           return answer;
    }
    public static void main(String args[]) {
        Car c = new Car();
        System.out.println(c.parseEqn("123+23"));
        System.out.println(c.parseEqn("3+5"));
        System.out.println(c.parseEqn("3-5"));
        /* Output From Console
         * 
         * 146.0
        8.0
        -2.0*/
    }
}