我有以下代码:
String st = "st1 15";
String sta = "15";
ArrayList<String> arrlist = new ArrayList<String>(5);
arrlist.add("string string string 15");
if (st.contains(sta) && !arrlist.contains(sta)) {
arrlist.add(st);
}
我希望在我错了的情况下arrlist.add(st);
不会被执行?当我执行代码if
语句为true
时,arrlist
填充st
任何帮助将不胜感激:)抱歉如果我犯了一个严重的错误,我很新。
答案 0 :(得分:2)
if (st.contains(sta) && !arrlist.contains(sta))
将为true
,因为1 & 1
始终为1
。 Boolean algebra
:
a & b
0 0 = false
0 1 = false
1 0 = false
1 1 = true
st
是一个String
,其中包含导致true
的子字符串“15”,而arrlist
不包含sta
所以!arrlist.contains(sta)
也返回true
。
因此,整个条件都是正确的。
答案 1 :(得分:1)
我认为你想要做的是:
String st = "st1 15";
String sta = "15";
ArrayList<String> arrlist = new ArrayList<String>(5);
arrlist.add("string string string 15");
if (st.contains(sta)) {
boolean shouldAdd = true;
for ( String val : arrlist ) {
if (val.contains(sta)) {
shouldAdd = false;
break;
}
}
if ( shouldAdd ) {
arrlist.add(st);
}
}