如何判断三个数完全不一样的时候才为真, BOOL

lewiskkk 2014-03-15 04:06:34
三个数,int a, b, c;

如何用bool来判断 a = b = c 的时候才为真 ??

我这样写的:

bool isTrue = a != b && a !=c && b != c;

可是这样写 任意2个数一样就为真了,我要3个数都不一样才为真,请问怎么写? 谢谢!
...全文
1330 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen870201 2014-03-17
  • 打赏
  • 举报
回复
这个逻辑很难理解吗?
桥头哥哥 2014-03-17
  • 打赏
  • 举报
回复
你看看是不是这个意思? if(a==b&&b==c&&a==c) { //三个数完全相同 } else { if(a==b||b==c&&||a==c) { //其中有两个相同 } else { //三个数都不相同 } }
桥头哥哥 2014-03-17
  • 打赏
  • 举报
回复
苦逼de小Coder 2014-03-17
  • 打赏
  • 举报
回复
引用 24 楼 wj38775428 的回复:
应该是这个意思吧

/// <summary>
        /// 判断输赢
        /// </summary>
        /// <param name="a">骰子1</param>
        /// <param name="b">骰子2</param>
        /// <param name="c">骰子2</param>
        /// <param name="d">猜的数值</param>
        /// <param name="e">猜的数值的数量</param>
        /// <returns></returns>
        public string BI(int a, int b, int c,int d,int e)
        {
            int[] f= new int[3]{a,b,c};
            int count=0;
            string s = "";
            for (int i = 0; i < f.Length-1; i++)
            {
                if (f[i]==d)
                {
                    count = count + 1;
                }
            }
            if (count == e)
            { 
                s="赢";
                
            }
            else
            {
                s="输";
            }
            return s;
        }
有个地方写错了。 for (int i = 0; i < f.Length-1; i++) 换成 for (int i = 0; i < =f.Length-1; i++) 或者for (int i = 0; i < f.Length; i++)
苦逼de小Coder 2014-03-17
  • 打赏
  • 举报
回复
应该是这个意思吧

/// <summary>
        /// 判断输赢
        /// </summary>
        /// <param name="a">骰子1</param>
        /// <param name="b">骰子2</param>
        /// <param name="c">骰子2</param>
        /// <param name="d">猜的数值</param>
        /// <param name="e">猜的数值的数量</param>
        /// <returns></returns>
        public string BI(int a, int b, int c,int d,int e)
        {
            int[] f= new int[3]{a,b,c};
            int count=0;
            string s = "";
            for (int i = 0; i < f.Length-1; i++)
            {
                if (f[i]==d)
                {
                    count = count + 1;
                }
            }
            if (count == e)
            { 
                s="赢";
                
            }
            else
            {
                s="输";
            }
            return s;
        }
oysd0628 2014-03-17
  • 打赏
  • 举报
回复
引用 楼主 u014030598 的回复:
3个骰子,其中一个赢的条件是Double 1s,也就是说你选了这个,三个骰子任意2个是1就赢了,但是三个都为1不算赢,想了半天也不知道应该如何判断。 请帮助一下, 谢谢!
楼猪要表达的是这个意思! 以下是原帖:http://bbs.csdn.net/topics/390733300
oysd0628 2014-03-17
  • 打赏
  • 举报
回复
引用 2 楼 u014030598 的回复:
不好意第一个问题是 a 不等于 b, a也不等于c, b也不等c, 的时候才为真
假时它有几种可能的: 1)三个数中仅有任意两个数相同,第三个数不和这两个数相同。 2)三个数全部一样。 这都说明了:3个数中任意2个以上的数相等时为假,反之为真!
oysd0628 2014-03-17
  • 打赏
  • 举报
回复
我个人觉得,是楼猪没有把问题给说明白,我看了这么久是这样理解楼猪的问题的,即:3个数中任意2个以上的数相等时为假,反之为真!如果是这样的话,那我就觉得,楼上的几个贴的代码都是正确的,不管是正面来判断“2个以上的数相等时为假”还是反面的判断3个数均不相等都是可行的
Regan-lin 2014-03-16
  • 打赏
  • 举报
回复
引用 12 楼 u014030598 的回复:
大家可能都误解我的意思了,我的要求是a,b,c这三个数没有任何一个数是相同的才为真,三个数全部一样的时候为假。 上面的方法我都试过了,只有有任意2个数一样的时候就为假了,这不是我想要的。 到底应该怎么写啊? 下面是我的代码,a=c的时候就为假了,我要求a=b=c的时候才为假


 int a = 1;

            int b = 1;

            int c = 1;

            bool isTrue = a != b && a != c && b != c && a != c;

            if (isTrue) // 为真
            {
                Console.WriteLine("Yes");
            }
            else // 为假
            {
                Console.WriteLine("No");
            }

            Console.WriteLine();

            Console.ReadLine();

int a = 1; int b = 1; int c = 2; if (a == b && b == c) // 为真 { Console.WriteLine("No"); } else if (a != b && b != c && c != a) { Console.WriteLine("Yes"); } else Console.Write("其他结果"); Console.WriteLine(); Console.ReadLine();
  • 打赏
  • 举报
回复
楼主,三个同时 && 必定有一个为假都为假,你告诉大家的就是这样的逻辑,写出的必然是这样的结果,如果不是你想要的,只能说明你没说清楚,或者搞错了逻辑
  • 打赏
  • 举报
回复
你要自己搞明白,“三个数完全都不一样”跟“存在某两个数一样”是个什么逻辑关系?或者是否还需要更多的逻辑? 抛开编程,先把数理逻辑认识清楚。
spmzfz 2014-03-16
  • 打赏
  • 举报
回复
这相想,这三个数没有任何一个数是相同的才为真,那么它不为真时,这三相数就一定全部一样?
spmzfz 2014-03-16
  • 打赏
  • 举报
回复
不好意思,10楼我的编码写错了。 “大家可能都误解我的意思了,我的要求是a,b,c这三个数没有任何一个数是相同的才为真,三个数全部一样的时候为假。” 其实是你的认识错误。 要求是a,b,c这三个数没有任何一个数是相同的才为真。那么当不为真,也就是为假时它有几种可能的: 1)三个数中仅有任意两个数相同,第三个数不和这两个数相同。 2)三个数全部一样。 但是你把假仅限于2),忘记了1)的可能。


            int a = 3, b = 4, c = 3;
            if(a != b && a !=c && b !=c )
            {
                Console.WriteLine("三个数完全不一样!");
            }else
            {
                Console.WriteLine("三个数中仅有两个数相同,或者三个数都是一样的。");
            }
  • 打赏
  • 举报
回复
引用 12 楼 u014030598 的回复:
大家可能都误解我的意思了,我的要求是a,b,c这三个数没有任何一个数是相同的才为真,三个数全部一样的时候为假。
那么“只有两个数相同,但是三个数不全部一样”这时候是真是假? 逻辑上完全说不通,你就写不出什么正确程序。先把大白话说明白,先让完全不懂编程的人也能看懂你的逻辑! 会编程算个屁啊?前提一定是要把基础学号。先假设自己不懂编程,先把基本逻辑搞清楚!
lewiskkk 2014-03-16
  • 打赏
  • 举报
回复
大家可能都误解我的意思了,我的要求是a,b,c这三个数没有任何一个数是相同的才为真,三个数全部一样的时候为假。 上面的方法我都试过了,只有有任意2个数一样的时候就为假了,这不是我想要的。 到底应该怎么写啊? 下面是我的代码,a=c的时候就为假了,我要求a=b=c的时候才为假


 int a = 1;

            int b = 1;

            int c = 1;

            bool isTrue = a != b && a != c && b != c && a != c;

            if (isTrue) // 为真
            {
                Console.WriteLine("Yes");
            }
            else // 为假
            {
                Console.WriteLine("No");
            }

            Console.WriteLine();

            Console.ReadLine();

WS教授 2014-03-15
  • 打赏
  • 举报
回复
换个思路, 如果有任何一对数字一样的就是false,
bool isTure = true;
if(a==b||a==c||b==c)
{
isTure =false;
}
spmzfz 2014-03-15
  • 打赏
  • 举报
回复


            int a = 3, b = 4, c = 3;
            if(a != b && a !=c && b !=c && a != c)
            {
                Console.WriteLine("三个数完全不一样!");
            }
  • 打赏
  • 举报
回复
int a=1, b=1, c=3;
            bool isTrue = a != b && a != c && b != c;
            //false
你是如何测试的,请指教!
  • 打赏
  • 举报
回复
引用 6 楼 u014030598 的回复:
谢谢楼上的,可是还不行啊! 只有2个数一样就为真了 我要的是这个三个数都不一样的时候才为真。 谢谢!
不可能的,&&符合是必须三个条件都满足才能为真,你看看是不是哪儿写的有问题?
lewiskkk 2014-03-15
  • 打赏
  • 举报
回复
引用 5 楼 Return_false 的回复:
bool isTrue = a != b && a !=c && b != c; 这种写法应该没有问题
我就是这么写的,可以不行,任意2个数一样的时候就不为真了,我要求每一个数和每一个数都不一样才为真。
加载更多回复(6)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧