android开发的计算器,关键代码段落
protected Double Calculate(String str) {
List<String> symbol = getsymbol(str);
List<Double> num = getnum(str);
if(num.size()==symbol.size())
num.add(0.0);
if (symbol != null) {
for (int i = 0; i < symbol.size(); i++) {
if (symbol.get(i).equals("×") || symbol.get(i).equals("÷")) {
String sign = symbol.remove(i);
Double n1 = num.remove(i);
Double n2 = num.remove(i);
Double result = 0.0;
if (sign.equals("×")) {
result = n1 * n2;
} else {
result = n1 / n2;
}
num.add(i, result);
i = i - 1;
}
}
}
while (!symbol.isEmpty()) {
String sign = symbol.remove(0);
Double n1 = num.remove(0);
Double n2 = num.remove(0);
Double result = 0.0;
if (sign.equals("+")) {
result = n1 + n2;
} else {
result = n1 - n2;
}
num.add(0, result);
}
return num.remove(0);
}
private List<Double> getnum(String str) {
StringTokenizer tokenizer = new StringTokenizer(str, "+-×÷");
List<Double> ops = new ArrayList<Double>();
while (tokenizer.hasMoreElements()) {
String string = tokenizer.nextElement().toString();
Double double1 = Double.parseDouble(string);
ops.add(double1);
}
return ops;
}
private List<String> getsymbol(String str) {
StringTokenizer tokenizer = new StringTokenizer(str, "0123456789.");
List<String> ops = new ArrayList<String>();
while (tokenizer.hasMoreElements()) {
String string = tokenizer.nextToken();
ops.add(string);
}
return ops;
}
评论2
最新资源