Java / Android - 加减计算器上的按钮

时间:2015-07-26 05:56:56

标签: java android

这不是重复。与其他StackOverflow问题不同,我不想显示表达式的结果,然后添加minusplus符号。我想在按下时将整个表达式转换为negativepositive

例如

-(5*8+7/7)

或再次按+/-时:

5*8+7/7

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

negative = !negative;

if (negative == true)
{
    expression = "-(" + expression + ")";
}
else
{
    expression = "+(" + expression + ")";
}

虽然这在计算方面确实有效,但我发现如何创建一种智能方式,以致+(-(不会继续附加到表达式上。

2 个答案:

答案 0 :(得分:0)

将正/负状态保持为布尔值,并在渲染时添加 - (...)部分。否则你可以匹配开头和匹配 - (相应)并简单地删除它。但是,这将错过-5的简单情况。要覆盖所有角落,您将编写相当多的代码。如果可能的话,我会把它保持为一个单独的状态。

编辑:只想添加“正确”的解决方案是解析字符串并构建表示表达式的树(AST)并检测最外层运算符是否为一元减号并简单地将其删除(或添加它如果它不存在),那么检查下一个运算符是否是括号并删除它们(如果你不只是添加减号),最后重新生成字符串。但所有这些都需要更多的工作。

答案 1 :(得分:0)

我认为你可以使用两个文本字段包括表达式,如[textfield A] [表达式] [textfield B],而textfield A和textfield B不能从用户输入,只是在用户按下负/正按钮时才更改

视图会像:

- (5 * 8 + 7/7)
要么
5 * 8 + 7/7

认为这可以帮到你。