在C#中比较两个数组

williamxiao 2008-06-10 01:38:59
比如说是char [] ch1= {'1','2','3','4','5','6','A','E'};这个数组.
和char [] ch2={'2','G','T','E','3'};比较.
我想循环取出ch2里的每个元素与ch1里面的每个元素依次进行比较,
如果ch2里面取出来的一个字符有在ch1里面出现的话就提示,然后再将ch2里面的
下一个字符取出来重新再与ch1的每一个字符进行比较.
如果ch2里面取出来的一个字符没有在ch1里面出现的话,就直接跳出循环,直接提示.
不知道有没有什么好的方法?
是用C#.net的代码哦,还望大侠能写点注释.
非常感谢!!!
...全文
802 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yarkandy 2012-04-08
  • 打赏
  • 举报
回复
3q so much
flytoskyblue 2008-11-08
  • 打赏
  • 举报
回复
闲逛中。。。
williamxiao 2008-06-12
  • 打赏
  • 举报
回复
抱歉!結帖有點晚。
非常感謝“路西菲尔”,謝謝!!!
darkarthur 2008-06-12
  • 打赏
  • 举报
回复
虽然帮不上LZ的忙
不过LZ少安毋躁。。。
williamxiao 2008-06-12
  • 打赏
  • 举报
回复
哥們,我雖然很菜。但是你不能鄙視我,試問我們這些人中間有誰不是從菜鳥出身的?
fuadam 2008-06-11
  • 打赏
  • 举报
回复
是,不过问题里的数组不是重复的,你看5楼还使用了2分查找呢,但是实际数组可能还需要排序。

如果真是情况有重复把add换成 map[ch1[i]] = 0;就可以了
dba_1984 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fuadam 的回复:]
错了编译就过不去了
[/Quote]

如果ch1数组有重复值的话,必定报错!键不能重复,但是你不能保证数组没有重复值的。
fuadam 2008-06-11
  • 打赏
  • 举报
回复
错了编译就过不去了
dba_1984 2008-06-11
  • 打赏
  • 举报
回复
Dictionary类使用错了吧,键值搞反了。
[Quote=引用 2 楼 fuadam 的回复:]
public static void Main(string[] args)
{
Dictionary <char, int> map = new Dictionary <char, int>();
char [] ch1= {'1','2','3','4','5','6','A','E'};
for (int i = 0; i < ch1.Length; ++i)
map.Add(ch1[i], 0);
char[] ch2 = { '2', 'G', 'T', 'E', '3' };
for (int i = 0; i < ch2.Length; ++i)
{ …
[/Quote]
fuadam 2008-06-11
  • 打赏
  • 举报
回复
为什么不结贴
ronal212121 2008-06-10
  • 打赏
  • 举报
回复

char [] ch1= {'1','2','3','4','5','6','A','E'};
char [] ch2={'2','G','T','E','3'};
int a;
for(int i=0;i<=ch2.Length;i++)
{
a=0;
for(int j=0;j<=ch1.Length;i++)
{
if(ch1[j]==ch2[i])
{
提示;
a=1;
break;
}
}
if(a==0) 提示;
}

zhengshaodong 2008-06-10
  • 打赏
  • 举报
回复
System.Array.BinarySearch(ch1, c) ==> System.Array.IndexOf(ch1,c)也可以
用后者吧 IndexOf方法得到字符在字符串数组的位置
baihe_591 2008-06-10
  • 打赏
  • 举报
回复
foreach(char c in ch2)
{
if(Array.IndexOf(ch1,c)!=-1)

MessageBox.Show("存在 ");
else
{
MessageBox.Show(" 不存在 ");
break;

}

}


waltguo 2008-06-10
  • 打赏
  • 举报
回复
我回帖,给我多少分,我得分都快用完了
zhengshaodong 2008-06-10
  • 打赏
  • 举报
回复
这样?

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char[] ch1 = { '1', '2', '3', '4', '5', '6', 'A', 'E' };
char[] ch2 ={ '1','2', 'G', 'T', 'E', '3' };
foreach (char c in ch2)
{
if (System.Array.BinarySearch(ch1, c) >= 0)
{
Console.WriteLine("{0}在ch1的索引是{1}", c, System.Array.BinarySearch(ch1, c));
}
else
{
Console.WriteLine("{0}没有在ch1中出现", c);
}
}
}
}
}

output:
1在ch1的索引是0
2在ch1的索引是1
G没有在ch1中出现
T没有在ch1中出现
E在ch1的索引是7
3在ch1的索引是2
fuadam 2008-06-10
  • 打赏
  • 举报
回复
骗不骗的无所谓,只要最后能结贴就行
waltguo 2008-06-10
  • 打赏
  • 举报
回复
简单吗》》》》???我就不会。。。。
fuadam 2008-06-10
  • 打赏
  • 举报
回复
public static void Main(string[] args)
{
Dictionary<char, int> map = new Dictionary<char, int>();
char [] ch1= {'1','2','3','4','5','6','A','E'};
for (int i = 0; i < ch1.Length; ++i)
map.Add(ch1[i], 0);
char[] ch2 = { '2', 'G', 'T', 'E', '3' };
for (int i = 0; i < ch2.Length; ++i)
{
if (!map.ContainsKey(ch2[i]))
{
Console.WriteLine("不在ch1中:{0}", ch2[i]);
break;
}
}
}
noky 2008-06-10
  • 打赏
  • 举报
回复
又是一个骗代码的,这么简单,楼主就不能自己写吗?BS

110,534

社区成员

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

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

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