项目里要验证4,5个参数的输入,希望要么全空要么全有值才算通过,否则少参数。
第一反应是异或,本以为全true或者全false返回false。否则是true。结果多于2个的true直接异或竟然是true。比如ture^true^true实际结果是true。好像是异或是两个两个按顺序算的,第一次true^true是false,然后再false^true就是true。参考logic – In Java XOR with three true inputs returns true. Why? – Stack Overflow
换个方法,把每个参数的boolean转成int,然后加起来,判断sum达成自己想要的验证。
我想要的验证是要么全空,要么全有,
for(boolean b : list){ int tmp = b ? 1 : 0; sum += tmp; } if(sum ==0 || sum == n){ return false; }else{ return true; }