美文网首页
每日一练50——Java异或(xor)逻辑运算符(8kyu)

每日一练50——Java异或(xor)逻辑运算符(8kyu)

作者: 砾桫_Yvan | 来源:发表于2018-07-19 09:50 被阅读0次

    题目

    在一些脚本语言如PHP,存在一个逻辑运算符(例如&&,||,and,or,等)中有一种是“异或”运算符。如果两个表达式中只有一个为真,则返回true ,否则返回false。例如:

    false xor false == false // since both are false
    true xor false == true // exactly one of the two expressions are true
    false xor true == true // exactly one of the two expressions are true
    true xor true == false // Both are true.  "xor" only returns true if EXACTLY one of the two expressions evaluate to true.
    

    任务

    由于我们无法在Javascript中定义关键字(好吧,至少我不知道该怎么做),你的任务是定义一个函数xor(a, b),其中a和b是要评估的两个表达式。您的xor函数应具有上述行为,如果两个表达式中只有一个计算为true,则返回true,否则返回false。

    测试用例:

    import static org.junit.Assert.*;
    import org.junit.Test;
    
    public class XORTest {
    
        private static void testing(boolean actual, boolean expected) {
            assertEquals(expected, actual);
        }
        
        @Test
        public void testBasic() {
            System.out.println("Testing basics.");
            testing(XOR.xor(false, false), false);
            testing(XOR.xor(true, false), true);
            testing(XOR.xor(false, true), true);
            testing(XOR.xor(true, true), false);
        }
        @Test
        public void testNested() {
            System.out.println("Testing nested calls.");
            testing(XOR.xor(false, XOR.xor(false, false)), false);
            testing(XOR.xor(XOR.xor(true, false), false), true);
            testing(XOR.xor(XOR.xor(true, true), false), false);
            testing(XOR.xor(true, XOR.xor(true, true)), true);
            testing(XOR.xor(XOR.xor(false, false), XOR.xor(false, false)), false);
            testing(XOR.xor(XOR.xor(false, false), XOR.xor(false, true)), true);
            testing(XOR.xor(XOR.xor(true, false), XOR.xor(false, false)), true);
            testing(XOR.xor(XOR.xor(true, false), XOR.xor(true, false)), false);
            testing(XOR.xor(XOR.xor(true, true), XOR.xor(true, false)), true);
            testing(XOR.xor(XOR.xor(true, XOR.xor(true, true)), XOR.xor(XOR.xor(true, true), false)), true);
        }
    }
    

    解题

    My

    Java有异或^运算符。注释的方法也可以。

    public class XOR {
        
        public static boolean xor(boolean a, boolean b) {
    //         return ( !a && b) ||(a && !b);
            return a^b;
        }
    }
    

    Other

    聪明的:

    public class XOR {
        
        public static boolean xor(boolean a, boolean b) {
            return a!=b;
        }
    }
    
    public class XOR {
        
        public static boolean xor(boolean a, boolean b) {
            return !(a==b);
        }
    }
    

    后记

    还好Java有异或^。

    相关文章

      网友评论

          本文标题:每日一练50——Java异或(xor)逻辑运算符(8kyu)

          本文链接:https://www.haomeiwen.com/subject/vzuzpftx.html