我正在尝试在Android中创建字符串计算器,这是我的功能;
public void hesapla(View view) {
islemString = Islem.getText().toString();
List<String> operatorList = new ArrayList<String>();
List<String> operandList = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(islemString, "+-*/()", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if ("+-/*()".contains(token)) {
operatorList.add(token);
} else {
operandList.add(token);
}
}
for(int i=0; i>=20; i++) {
if (operatorList.get(i) == "(") {
int a=0;
while(operatorList.get(a) == ")"){
if(operatorList.get(a+1) == "+"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) + Double.parseDouble(String.valueOf(operandList.get(i+1)));
}
if(operatorList.get(a+1) == "-"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) - Double.parseDouble(String.valueOf(operandList.get(i+1)));
}
if(operatorList.get(a+1) == "*"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) * Double.parseDouble(String.valueOf(operandList.get(i+1)));
}
if(operatorList.get(a+1) == "/"){
sonucDouble = Double.parseDouble(String.valueOf(operandList.get(i))) / Double.parseDouble(String.valueOf(operandList.get(i+1)));
}
a++;
}
}
}
当点击Calculate按钮时,我得到List和operator的操作数以列出每一个。但我不能再读了。
if (operatorList.get(i) == "(")
我正在尝试这个,但我的错在哪里?我怎么能?谢谢。
答案 0 :(得分:4)
在Java/Android
对象比较中应使用equals()
而不是==
(作为避免NullPointerException
的最佳做法),在比较String
时首先使用常量。 / p>
示例:
if ("(".equals(operatorList.get(i)))
答案 1 :(得分:1)
你有永远不会执行的for
循环
for(int i=0; i>=20; i++) {
if (operatorList.get(i) == "(") {
您从i=0
开始,循环的条件是i>=20
,这不是真的。尝试
for(int i=0; i<=20; i++) {
if (operatorList.get(i) == "(") {
然后看看你的代码是否向前发展
答案 2 :(得分:0)
我认为在比较String时需要更改代码,
if (operatorList.get(i).equals("(")))
其他
也有变化