1 public static int[] Tsh(BettingInfoIssueOpenExt biio) 2 { 3 var wincnt = new[] { 0, 0, 0 }; 4 var openno = biio.SelectMedian.SplitLength(1).OpenNoMedianNumToArray(biio.LotteryOpenNo.Split(',')); 5 Array.Sort(openno); 6 if (openno.IsSameNo(0, 0, 1)) 7 { 8 wincnt[0] = biio.BettingNumber.Split('|').Sum(b => b.Split(',').Count(s => s.Equals("豹子"))); 9 } 10 else if (openno.IsJunko()) 11 { 12 wincnt[1] = biio.BettingNumber.Split('|').Sum(b => b.Split(',').Count(s => s.Equals("顺子"))); 13 } 14 else if (openno.IsSameNo(1, 1)) 15 { 16 int count = 0; 17 18 foreach (var b in biio.BettingNumber.Split('|').Select(s => s.Split(','))) 19 { 20 foreach (var s in b) 21 { 22 if ("对子".Equals(s)) 23 { 24 count+=1; 25 } 26 } 27 } 28 wincnt[2] = count; 29 } 30 return wincnt; 31 }
1 [TestMethod()] 2 public void TshTest() 3 { 4 var biio = new BettingInfoIssueOpenExt 5 { 6 BetNumLength = 3, 7 BettingNumber = "对子", 8 LotteryOpenNo = "5,1,0,0,4", 9 SelectMedian = "00111" 10 }; 11 12 var ints = SscCalculate.Tsh(biio); 13 14 15 Assert.AreEqual(1, ints[2]); 16 }
-----------------------------------------------------
统一回复,谢谢大家的关注,此问题已解决,原因如下:
VS2015编译中文字符串时会编译成乱码,导致明明看下去中文比较是TRUE,但实际执行起来是与乱码的中文变量进行比较,所以不相等。
解决办法:
把文件改成UTF-8编码。
我想知道你的s为啥是string类型
Split('|') 返回值是字符串数组
@carl~: 也就是说是你的自定义函数喽?
@刘宏玺: 不是,C# 类库的,已更新问题
@carl~: 额,你截图里面少了select(),麻烦在吧biio.BettingNumber的测试值发一个呗,方便测试问题
@刘宏玺: 不好意思,没注意,看到测试值了
@carl~:
@刘宏玺: 同样的代码我这里仍然不行
@carl~: 除非你吧整个项目发过来,或者我远程帮你调试下看看,否则很难沟通了
@刘宏玺: 加我QQ远程一下吧,先谢谢了,扣扣:3-7-2838-7-2-9
重新生成再run一下
已经尝试过好多遍,无效
count+=1; //试下这个
想不到哪里出错, 楼下上
首先,写法上建议使用 "对子"==s;其次 我们建议使用 equals 特别是对于string类型的。
反正我告诉你,VS一般不会出这样的错,建议你把这个方法所有代码贴出来,让我们在自己电脑上跑下。
已更新问题
你直接在count++上打断点,看停下不~另外,最好还是把代码贴全...
已更新问题
@carl~: 代码不全,很难运行,看楼下实验的,都是正常的。不好分析了。
好了吗?没好的话,在if里面直接这样写:count = 2;试试。O(∩_∩)O哈哈~
把代码贴全,你这split后的数据格式是什么样的。全然不知。总感觉第二个foreach。我无法想象到这里的数据。= =咳咳!
if(b=="对子")
{
count++;
}
已更新问题
两个Foreach为啥报警告。肯定 是这里出了问题
String判断相等不能用==。==会判断对象地址,要用equals 这样的判断
已经尝试过==,equals,string.compare,都不生效
打印一下s,2,对s进行强转一下。