使用StringTokenizer的Java Calculator

时间:2014-11-11 23:57:35

标签: java

我正在开发一个简单的计算 我的输入3 + 3

我可以用空格(3 + 3)来做,但是如果没有像(3 + 3)这样的空格我怎么办呢!

这是我的最后一段代码我知道这是错的,但我还在学习!

package calcPkg;

import java.util.Scanner;
import java.util.StringTokenizer;

public class test {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String myString = input.nextLine();
    String DELIM     = "+";
        double dblNum1   = 0;
        double dblNum2   = 0;
        double dblResult = 0;

        StringTokenizer st = new StringTokenizer(myString, DELIM, true);

        dblNum1 = Double.parseDouble(st.nextToken());
        //dblNum2 = Double.parseDouble(st.nextToken());

        dblNum2 = 2;
        dblResult = dblNum1 + dblNum2;

        while (st.hasMoreTokens())
            System.out.println(st.nextToken());


        System.out.println("First Number:" + dblNum1);
        System.out.println("Operation:" + DELIM);
        System.out.println("Second Number:" + dblNum2);
        System.out.println("Result:" + dblResult);

    }
}

2 个答案:

答案 0 :(得分:1)

我猜你的问题是处理空格,你不需要StringTokenizer给你返回' +'所以你不需要第三个参数StringTokenizer,一旦你获得了你的标记,你可以使用trim()函数来修剪空格

public class Test {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String myString = input.nextLine();
        String DELIM     = "+";

        StringTokenizer st = new StringTokenizer(myString, DELIM);
        double dblNum1 = Double.parseDouble(st.nextToken().trim());
        double dblNum2 = Double.parseDouble(st.nextToken().trim());

        double dblResult = dblNum1 + dblNum2;

        System.out.println("First Number:" + dblNum1);
        System.out.println("Operation:" + DELIM);
        System.out.println("Second Number:" + dblNum2);
        System.out.println("Result:" + dblResult);

    }
}

我为你写了一个附加部分,但是我猜你的期望写完整的+, - ,*,/算术计算器,所以你可以根据你在这里看到的那样完成,但DELIM会被分配在java中使用条件,if或switch语句,所以你应该查看它们。

答案 1 :(得分:0)

我遇到了同样的问题并使用脚本引擎解决了它。

通过检查输入的变量是否有效等,确保您的应用程序处理恶意脚本......

Evaluating a math expression given in string form