2014-02-10 41 views
0

作为进入android我决定用我的默认计算器。带有4个操作标志的简单计算器。我一直在给所有按钮正确的行为,将每个数字存储在'num'ArrayList(String)中,并签署一个'sign'ArrayList(String)。计算器应用程序方法

我想做的事情是将数字和符号组合成一个字符串,将其解析为一个浮点数并得到结果。我认为这是的方便/简单的方法来处理它,因为当你设定一个浮动像这样的:

float f = 6*4-5/2+3 

它给你正确的结果。但它显然不从一个字符串,如下所示:

String s = "6*4-5/2+3" 
Float f = Float.valueOf(s) 

有没有办法从我的2 ArrayList(字符串)获取结果?在否定的情况下,什么是可行的方法(从某种意义上说我不是一个有经验的程序员)我呢?

+0

使用DijkstraTwoStack算法进行表达式评估。这将帮助你解决问题,如果你想我会添加代码的答案? –

+0

看一下这个图书馆http://www.objecthunter.net/exp4j/ –

+0

嘿@AnuranjitMaindolan和A.S ..我看看你的两个想法。非常感谢你! – NicolaF

回答

0

我认为这种方法是不正确的。 我会做以下几点:

你会有一个Textview或Edittext作为计算器的“屏幕”在上面。

那么你会有你所有的号码和操作符号按钮。现在

,每次按下数字,则追加到屏幕上的最后一个,使用.append()

,一旦你在运营商的标志挖掘 - 会发生两两件事:

1)数目TextView的将被存储为一个浮点数(在varibale使用Float.valueOf(yourTextView);,说firstNum

2)你将你保存在第二可变点击操作员,比方说串calcOper

现在,你输入你的第二个数字,然后你会按Equals符号。

接下来会发生的情况是简单地使用SwitchIf表达式。

如果calcOper为“ - ” - 则执行firstNum - 屏幕上显示的当前编号。

如果calcOper是“+” - 那么做firstNum +屏幕上显示的当前编号。

最后不要忘记在TextView上设置文本的结果。

祝你好运!

+0

嘿,谢谢!问题是我想能够执行多个和更长的操作。所以我需要能够存储更多的数字,而不仅仅是2.我不能执行第一个操作,然后第二个,然后第三个等,因为如果我有这个'6 + 4/2'我需要做4/2,然后只有6+以上的结果。 – NicolaF

+0

关于存储更多的数字,这不是一个问题 - 您只需将结果存储在第三个变量中。关于长链操作我可以想到一个解决方案,但它很漫长而且复杂 - 我相信有更好的答案在那里:-) – gilonm