【发布时间】:2016-07-25 11:57:25
【问题描述】:
这是我的代码:
Scanner s = new Scanner(System.in);
int t = s.nextInt();
String [] pair_left = new String[t];
String [] pair_right = new String[t];
for (int i = 0; i < t; i++) {
pair_left[i] = s.next();
pair_right[i] = s.next();
}
HashSet hs1=new HashSet();
HashSet hs2=new HashSet();
int j=0;
for(int i=0;i<t;i++){
if(hs1.add(pair_left[i])||hs2.add(pair_right[i])){
j++;
System.out.println(j);
}
else {
System.out.println(j);
}
}
输入是:
5
john tom
john mary
john tom
mary anna
mary anna
现在当i=2 然后hs1.add(pair_left[i]) 返回false 然后它转到hs2.add(pair_right[i]) 这也返回'false'所以hs1.add(pair_left[i])||hs2.add(pair_right[i]) 应该返回'false' 但在我的情况下它显示true。为什么?
当我用按位或替换逻辑或时,它会显示正确的结果。 如果有任何更好的方法可以做到这一点,那么也给它。
【问题讨论】:
标签: java logical-or