对于控制台计算器程序,如何将字符串数组(即数字)拆分为字符串数组

时间:2015-04-23 01:52:31

标签: java

我正在用Java编写计算器的命令行应用程序。我需要能够(按照程序要求)将字符串数组(6 + 3)拆分成字符串数组?怎么办?我知道你可以使用split方法,但我不确定如何使用它们进行数学运算?

旁注:对于这个应用程序,你怎么能让程序接受各种不同长度的字符串来与它们进行数学运算?

public class Calculator {
//public String input ="foo";

public static void main(String[] args) {
    String input = ""; // initalize the string
    boolean isOn = true; // used for the while loop...when false, the program will exit.
    String exitCommand = "Exit"; // exit command



    System.out.print("Enter a math problem"); // dummy test
    Scanner keyboard = new Scanner(System.in);
    //input = keyboard.nextLine();
    String[] token = input.split(("(?<=[-+*/])|(?=[-+*/])"));
    while (isOn) {
        for (int i = 0; i < token.length; i++) {
            //System.out.println(token[i]);
            Double d = Double.parseDouble(keyboard.nextLine()); //This causes an error
            //String[] token = d.split(("(?<=[-+*/])|(?=[-+*/])"));
            //input = keyboard.nextLine();

            if (input.equalsIgnoreCase(exitCommand)) {
                // if the user enters exit(ignored case) the boolean goes to false, closing the application
                isOn = false;
            }

           System.out.print(token[0] + d); // shows the math problem(which would by the end of the coding should show the
            //answer to the entered math problem.

        }


    }
}
public void validOperator() {
    ArrayList<String> operator = new ArrayList<String>();
    operator.add("+");
    operator.add("-");
    operator.add("*");
    operator.add("/");

}
public void validOperands(){
    ArrayList<String> operand = new ArrayList<String>();
    operand.add("0");
    operand.add("1");
    operand.add("2");
    operand.add("3");
    operand.add("4");
    operand.add("5");
    operand.add("6");
    operand.add("7");
    operand.add("8");
    operand.add("9");
}

}

我就是这样。现在我无法弄清楚如何解析表达式。我可以输入一个数字,但不能输入表达式并使用数学“数学”。

1 个答案:

答案 0 :(得分:0)

有点模糊,但假设你试图将操作符与数字分开

new String(&#34; 6 + 3&#34;)。split(&#34; \ +&#34;)应该给你两个数字。

Split采用正则表达式,因此您可以将所有正在处理的运算符放在正则表达式中并获取所有数字