从字符串中获取运算符符号

时间:2013-11-25 01:27:26

标签: java eclipse string math operators

如果我将方程式7 + 13 = 20作为字符串,我将如何将运算符符号+取出等式?

String operator = fileContent.substring(fileContent.indexOf('+'));

我沿着这些方向尝试了一些东西,并改变了其中的一些内容,但我无法让操作员离开。我只能让它返回+ 13 = 2013 = 20之类的内容,而不是单独的操作符。

我不能使用正则表达式,try / catch,数组或SystemTokenizer。

此外,数字之间并不总是有空格,并且它们的大小不会只有一两位数。

最后一件事。我也需要它,以便如果操作符被放入类似problem = (firstNumber + operator + secondNumber)之类的东西,它实际上可以用来计算数学。

预期的输出,或者至少是我尝试做的,是让它取第一个和第二个数字,然后读取运算符以便它可以对问题进行计算。它真的令人困惑,我很抱歉。

int first = Integer.parseInt(fileContent.substring(0, fileContent.indexOf(" ")));
int second = secondNumber(result, fileContent);
int last = Integer.parseInt(result.substring(result.indexOf("=") + 1));

这里是我必须得到第一个,第二个和答案数字的代码,但是我需要以一种我可以将它放在第一个和第二个数字之间的方式取出运算符符号以便它实际上会进行数学计算,所以我可以根据答案编号进行检查。

它的作业将作为一个数学问题评分者"但是没有一个运营商是一样的。

我需要它7 and 13并打印20作为答案。

2 个答案:

答案 0 :(得分:2)

删除其他所有内容:

String operator = fileContent.replaceAll("[^-+*/]", "");;

请注意,减号必须在字符类中排在第一位或最后一位,否则会被转义,否则就是范围运算符。

答案 1 :(得分:2)

这个答案将给出输出+。考虑到你的变量名是operator,我认为这就是你想要的。

使用substring

String operator = fileContent.substring(fileContent.indexOf('+'), fileContent.indexOf('+') + 1);

或写得更可读:

int index = fileContent.indexOf('+');
String operator = fileContent.substring(index, index + 1);

使用charAt

char operator = fileContent.charAt(fileContent.indexOf('+'));

或写得更可读:

int index = fileContent.indexOf('+');
char operator = fileContent.charAt(index);

修改

以下是查找第一个和第二个数字的方法:

String eqn = "7 + 13 = 20";

int operatorIndex = eqn.indexOf(operator); // already defined operator as a String
int equalIndex = eqn.indexOf('=');

int first = Integer.parseInt(eqn.substring(0, operatorIndex).trim());
int second = Integer.parseInt(eqn.substring(operatorIndex + 1, equalIndex).trim());

现在我们有String operator = "+";int first = 7;以及int second = 13;

Click this sentence if you don't know what a switch statement is in Java。这只是使用if结构的另一种方式。这不难理解。如果你也需要我,我可以重写使用if结构。

我会用这个:

String operator = "+";

int first = 7; int second = 13;

switch (operator)
{
    case "+": 
        System.out.print("" + (first + second));
        break;

    case "-": 
        System.out.print("" + (first - second));
        break;

    case "*": 
        System.out.print("" + (first * second));
        break;

    case "/": 
        System.out.print("" + (first / second));
        break;

    default: System.out.print("not sum, difference, product or quotient");
}

operator = "+";的情况下,输出为20。如果operator = "-";,则输出为-6