首页 新闻 赞助 找找看

if条件是true,但是不执行

0
悬赏园豆:20 [已解决问题] 解决于 2016-01-23 11:42
如图,s=="对子"  是true,但是 count++没有执行
 
原 方法,测试代码
 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编码。

carl~的主页 carl~ | 初学一级 | 园豆:84
提问于:2016-01-19 20:08
< >
分享
最佳答案
0

我想知道你的s为啥是string类型

收获园豆:20
刘宏玺 | 专家六级 |园豆:14020 | 2016-01-20 12:49

Split('|') 返回值是字符串数组

carl~ | 园豆:84 (初学一级) | 2016-01-20 12:50

@carl~: 也就是说是你的自定义函数喽?

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-20 12:52

@刘宏玺: 不是,C# 类库的,已更新问题

carl~ | 园豆:84 (初学一级) | 2016-01-20 13:04

@carl~: 额,你截图里面少了select(),麻烦在吧biio.BettingNumber的测试值发一个呗,方便测试问题

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-20 13:08

@刘宏玺: 不好意思,没注意,看到测试值了

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-20 13:09

@carl~: 

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-20 13:16

@刘宏玺: 同样的代码我这里仍然不行

carl~ | 园豆:84 (初学一级) | 2016-01-20 13:21

@carl~: 除非你吧整个项目发过来,或者我远程帮你调试下看看,否则很难沟通了

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-20 13:22

@刘宏玺: 加我QQ远程一下吧,先谢谢了,扣扣:3-7-2838-7-2-9

carl~ | 园豆:84 (初学一级) | 2016-01-20 13:25
其他回答(12)
0

重新生成再run一下

jello chen | 园豆:7306 (大侠五级) | 2016-01-19 20:20

已经尝试过好多遍,无效

支持(0) 反对(0) carl~ | 园豆:84 (初学一级) | 2016-01-19 20:25
0

count+=1;   //试下这个 

顾星河 | 园豆:7169 (大侠五级) | 2016-01-19 21:36
0

想不到哪里出错, 楼下上

蜗牛大师 | 园豆:209 (菜鸟二级) | 2016-01-20 08:13
0

首先,写法上建议使用 "对子"==s;其次 我们建议使用 equals 特别是对于string类型的。

斯拉克 | 园豆:223 (菜鸟二级) | 2016-01-20 09:03
0

反正我告诉你,VS一般不会出这样的错,建议你把这个方法所有代码贴出来,让我们在自己电脑上跑下。

happydaily | 园豆:301 (菜鸟二级) | 2016-01-20 09:16

已更新问题

支持(0) 反对(0) carl~ | 园豆:84 (初学一级) | 2016-01-20 13:05
0

你直接在count++上打断点,看停下不~另外,最好还是把代码贴全...

幻天芒 | 园豆:37175 (高人七级) | 2016-01-20 09:28

已更新问题

支持(0) 反对(0) carl~ | 园豆:84 (初学一级) | 2016-01-20 13:05

@carl~: 代码不全,很难运行,看楼下实验的,都是正常的。不好分析了。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2016-01-20 17:18
0

好了吗?没好的话,在if里面直接这样写:count = 2;试试。O(∩_∩)O哈哈~

[0] | 园豆:1257 (小虾三级) | 2016-01-20 09:47
0

把代码贴全,你这split后的数据格式是什么样的。全然不知。总感觉第二个foreach。我无法想象到这里的数据。= =咳咳!

if(b=="对子")

{

count++; 

}

大楚打码人 | 园豆:4313 (老鸟四级) | 2016-01-20 10:55

已更新问题

支持(0) 反对(0) carl~ | 园豆:84 (初学一级) | 2016-01-20 13:04
0

两个Foreach为啥报警告。肯定 是这里出了问题

需要格局 | 园豆:2145 (老鸟四级) | 2016-01-20 11:40
0

String判断相等不能用==。==会判断对象地址,要用equals 这样的判断

jzzlo | 园豆:282 (菜鸟二级) | 2016-01-20 11:47

已经尝试过==,equals,string.compare,都不生效

支持(0) 反对(0) carl~ | 园豆:84 (初学一级) | 2016-01-20 11:48
0

1. if(b=="对子")

{count++; }

else{ 输出测试一下,是【b=="对子"】没执行,还是【count++;】没执行}

 

2. [0] 回答的::count = 2;试试。

小刺猬001 | 园豆:660 (小虾三级) | 2016-01-20 14:26
0

打印一下s,2,对s进行强转一下。

用代码颠覆人生 | 园豆:206 (菜鸟二级) | 2016-01-22 17:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册