繁体   English   中英

使用StringTokenizer的Java计算器

[英]Java Calculator using StringTokenizer

我正在开发一个简单的计算我的输入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);

    }
}

我猜您的问题是处理空格,您不需要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中切换语句,因此您应该查找这些语句。

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

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

评估以字符串形式给出的数学表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM