我想通过列表编写一个简单的系统,该系统将识别符号并对列表中的某些符号进行一些计算,并确定是否存在任何错误。
它看起来像这样:
private static List<String> list = new ArrayList<>();
private static void splitToList(String string){
list.addAll(Arrays.asList("((35+6-(4+4))=0;".split("")));
chekList(list);
}
private static void chekList (List list){
int open = 0;
int close =0;
for (int i=0;i<list.size();i++) {
System.out.println(list.get(i));
if (list.get(i) == "(") {
open++;
System.out.println(open);
}
if (list.get(i) == ")") {
close++;
System.out.println(close);
}
}
if (open != close){
System.out.println("false!");
br = true;
}
}
因此,这个if语句不能识别列表元素中的“(”和“)”的问题。有什么方法可以检查我的列表元素是否为“(”或“)”?
这是完整的IDE输出。没有任何“打开”和“关闭”结果。
答案 0 :(得分:1)
==
测试引用是否相等(它们是否是同一对象)。
您需要使用")".equals(list.get(i))
来测试值是否相等(在逻辑上它们是否相等)。
答案 1 :(得分:1)
private static void chekList (List<String> list){
int open = 0;
int close =0;
for(String str : list) {
System.out.println(str);
if ("(".equals(str))
System.out.println(++open);
else if (")".equals(str))
System.out.println(++close);
}
if (open != close)
System.out.println("false!");
}