| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1111 人关注过本帖
标题:关于数组的复杂比较,求解
取消只看楼主 加入收藏
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:6 
关于数组的复杂比较,求解
strs1为变量数组,其中每个变量都是通过不同的文本框输入;
第一优先级的常量数组:strs2和strs3;
第二优先级的常量数组:strs4;

想实现以下功能:
1.只要strs1其中的元素包含strs2或strs3,该部分元素所在文本框的背景就为红色;
2.strs1的剩余元素若还包含strs4,则该部分元素所在文本框的背景就为黄色


目前的错误结果:

图片附件: 游客没有浏览图片的权限,请 登录注册



期待的结果:

图片附件: 游客没有浏览图片的权限,请 登录注册


 private void TimerProcess1(object o)
 {
     string strs = string.Empty;
     string[] strs1 = { "a", "b", "c", "d", "e", "f", "g" };//定义数组
     string[] strs2 = { "飞", "行", "器" };//常量数组
     string[] strs3 = { "服", "务", "器" };
     string[] strs4 = { "飞", "机" };

     Dictionary<string, string> map = new Dictionary<string, string>();
     for (int k = 0; k < strs1.Length; k++)
           {
                map.Add(strs1[k], "");
            }

            for (int m = 0; m < strs2.Length; m++)
            {
               if (map.ContainsKey(strs2[m]))
                {
                请高手指点!
                 }

[ 本帖最后由 urick 于 2014-11-7 00:27 编辑 ]
搜索更多相关主题的帖子: 文本框 黄色 元素 
2014-11-06 00:10
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
private void button1_Click(object sender, EventArgs e)//
        {
            Dictionary<TextBox, string> map = new Dictionary<TextBox, string>();
            List<string> strs1 = new List<string>();
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    map.Add((c as TextBox), (c as TextBox).Text);
                }
            }
            string[] strs2 = { "飞", "行", "器" };
            string[] strs3 = { "服", "务", "器" };
            string[] strs4 = { "飞", "机" };
            foreach (KeyValuePair<TextBox, string> key in map)
            {
                if (strs2.Where(s => s == key.Value).Count() > 0 || strs3.Where(s => s == key.Value).Count() > 0)
//只有在包含strs2或strs3的所有元素,该条件才成立。如何修改??
                {
                    key.Key.BackColor = Color.Red;
                }
                if (strs4.Where(s => s == key.Value).Count() > 0)
//如何将比较后剩余的元素组成一个数组,再与strs4进行比较,具体代码该怎么实现,求解!
                {
                    key.Key.BackColor = Color.Yellow;
                }
            }

[ 本帖最后由 urick 于 2014-11-7 00:18 编辑 ]
2014-11-07 00:15
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 5 楼 afdoa83
麻烦发个具体代码,想学习下
2014-11-07 13:23
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
为避免出现歧义,重新明确下需求,希望集思广益,给出具体代码,以供参考:
1. 将textbox1-textbox5中的字符组成一个变量数组strs1={a,b,c,d,e};

2. 若常量数组strs2={a1,a2,a3}中的每个元素都存在于strs1中,a1、a2、a3元素所在的文本框背景色变为红色(strs1只包含2个或1个strs2的元素,则该判据失效);

3. 若步骤2的判据生效,则去除strs1中的a1、a2、a3元素,构建一个新的数组newstrs1后,与常量数组strs3={b1,b2}进行比较;若步骤2的判据失效,则将strs1与strs3进行比较;

4. 若数组strs3的所有元素都存在于数组newstrs1或strs1中,则元素所在的文本框背景色变为黄色。


[ 本帖最后由 urick 于 2014-11-7 18:30 编辑 ]
2014-11-07 18:28
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 9 楼 afdoa83
起的这么早 辛苦了

那为什么没有用到“遍历Dictionary”的方式呢??
2014-11-08 17:31
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 9 楼 afdoa83
“Contains”可以实现吗??

[ 本帖最后由 urick 于 2014-11-8 23:27 编辑 ]
2014-11-08 23:02
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 13 楼 afdoa83
拜托 有时间试验下
2014-11-09 13:27
快速回复:关于数组的复杂比较,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016791 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved