我正在製作一個android單行計算器。到目前爲止,這個計算器在我用javascript,C++和c#編寫時工作正常,但我無法讓它在android(java)中工作。這裏是我的代碼:Android計算器給出了錯誤的答案
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.任何想法?
嗯,我不知道。我試過了,但現在應用程序崩潰了。有任何想法嗎?這也是爲字符,或只是爲字符串? – 2013-05-06 21:32:10
'allNums.get(i)'必須拋出一個'ArrayIndexOutOfBoundsException',因爲你從'1'循環到'allNums.size()'。嘗試將調用改爲'allNums.get(i-1)',就像你在'allSigns'中做的那樣。 – 2013-05-06 21:40:04
如果您打算從allNums.get(i)製作allNums.get(i-1),則無法使用。它們是不同的,因爲符號總是比數字的數量少一個。希望你能理解我。 – 2013-05-06 21:48:18