我正在制作一个Android单行计算器。到目前为止,当我用javascript,c ++和c#编写它时,这个计算器可以工作,但我不能让它在android(java)中工作。这是我的代码:
String seq = String.valueOf(sec.getText());
ArrayList<Integer> allNums = new ArrayList<Integer>();
int i = 0;
ArrayList<String> allSigns = new ArrayList<String>();
String currentNums = "";
for (i = 0; i< seq.length(); i++)
{
if (seq.charAt(i) != '+' && seq.charAt(i) != '-' && seq.charAt(i) != '*' && seq.charAt(i) != '/')
{
currentNums+=seq.charAt(i);
}
else
{
allNums.add(Integer.parseInt(currentNums));
currentNums="";
allSigns.add(String.valueOf(seq.charAt(i)));
}
}
allNums.add(Integer.parseInt(currentNums));
int result = (Integer)allNums.get(0);
for (i = 1; i <= allNums.size(); i++)
{
if (allSigns.get(i-1) == "+")
result+=allNums.get(i);
else if (allSigns.get(i-1) == "-")
result-=allNums.get(i);
else if (allSigns.get(i-1) == "*")
result*=allNums.get(i);
else if (allSigns.get(i-1) == "/")
result/=allNums.get(i);
else
{
sec.setText(String.valueOf(result));
break;
}
}
我正在通过onClick事件调用该函数。该应用程序不会崩溃,但只给我作为第一个数字的答案。例如:34 + 31-4 * 8/1它返回34.任何想法?
答案 0 :(得分:2)
您正在使用==
运算符来比较字符串值,这是不正确的。对于对象(包括字符串),==
比较引用以确定它们是否引用同一对象。
要比较字符串值,请改用String#equals
:
if ("+".equals(allSigns.get(i-1)))
答案 1 :(得分:0)
java中的字符串比较使用"oneString".equals("another")
而不是==
...
if (allSigns.get(i-1).equals("+"))
result+=allNums.get(i);
else if (allSigns.get(i-1).equals("-"))
result-=allNums.get(i);
else if (allSigns.get(i-1).equals("*"))
result*=allNums.get(i);
else if (allSigns.get(i-1).equals("/"))
result/=allNums.get(i);
else
....
应该这样做。