如何在计算器中进行多项操作?

时间:2015-08-10 12:47:11

标签: java android android-studio

我为了学习而为了安卓而制作了简单的计算器。所有数字键只有exp2(+INF) = +INF个相应的数字append。等于按钮执行加/减/除/乘的工作。但问题是,它一次只能做一个,如果我混合加减运算,就会崩溃。这是执行加法的等号按钮的代码:

TextView

如上所示,出现了另一个问题。它无法处理多个equals = (Button) findViewById(R.id.equals); equals.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { result.getText(); String expression = (result.getText()).toString(); if(expression.contains("+")){ String[] numbers = expression.split("\\+"); String no1 = numbers[0]; String no2 = numbers[1]; Double numb1 = Double.valueOf(no1); Double numb2 = Double.valueOf(no2); Double added = numb1+numb2; theresult = String.valueOf(added); result.setText(theresult); } } }); 符号,如何才能使其添加x个数字?对不起,我是编程的新手,而不只是让它工作,我想学习它是如何工作所以请尽可能解释。感谢。

3 个答案:

答案 0 :(得分:0)

利用堆栈进行多项操作,您可以使用此算法http://www.smccd.net/accounts/hasson/C++2Notes/ArithmeticParsing.html

答案 1 :(得分:0)

如果它崩溃了,那么最好的想法是发布logcat错误。

现在问题;您只是基于+分隔表达式。所以如果你添加-,那么数组的第二部分也将包含-,它也无法转换为double。在这里你得到错误。

因此,最好的想法是根据所有表达式(例如+-*/来区分仅数字部分。一旦所有表达式被分离,那么只有你可以将剩余的值转换为字符串并根据相应的表达式执行操作。

你必须为这一切编写一些代码。

现在可以帮助你的资源。 (第二是更短的方法)

  1. Evaluating a math expression given in string form

  2. How to parse a mathematical expression given as a string and return a number?

答案 2 :(得分:0)

这最适合作为评论,我决定把它作为一个答案,只是为了不让它丢失,因为已经有一些答案。

看看this question;接受的答案可能不是你想要的,因为你想学习,但有一个可能你正在寻找的boan答案。我不是在这里复制它,因为它已经在S.O。