这是我的代码:
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
thenhs1.add(pair_left[i])
返回 false 然后它会返回 'false'hs2.add(pair_right[i])
所以hs1.add(pair_left[i])||hs2.add(pair_right[i])
应该返回 'false' 但在我的情况下它显示true
。为什么?
当我用按位或替换逻辑或时,它会显示正确的结果。如果有任何更好的方法可以做到这一点,那么也可以提供。