string name = Console.ReadLine();
string[] mystr = new string[] { "陈一", "陈二" };
for (int i = 0; i < name.Length; i++)
{
if(mystr[i].Equals(name))
{
Console.WriteLine("您查到的名字{0}存在", name);
break;
}
else{
Console.WriteLine("您查找的名字{0}不存在", name);
}
}
Console.WriteLine("查找完毕");
Console.ReadLine();




好纠结啊。
你应该是想达到这样的效果:输入一个名字,如果再mystr中存在就输出查找的名字存在,否则就输出查找的名字不存在,你的代码逻辑有点问题。
我直接上代码了,你一看就懂,
string name = Console.ReadLine();
string[] mystr = new string[] { "陈一", "陈二" };
if (mystr.Count(p => p.ToString() == name) > 0)
{
Console.WriteLine("您查到的名字{0}存在", name);
}
else
{
Console.WriteLine("您查找的名字{0}不存在", name);
}
不知道你要实现什么功能
你的代码不清楚
如果是获取一行的名字 就是不是一个人的话 那么你还得将获取的一行分解
string[] nameArr=console.Readline().Split(' ');//这就是所有的名字的数组
//接下来就是 两个数组比对查找了
算法太多就不一一说了
如果是获取一个人的名字 就更加简单了
你这里的name.Length我很是困惑 要名字的长度做什么?代码有问题!
int iLen=mystr.Length;//比对名字库的元素个数
bool isExist=false;//是否存在
for(int i=0;i<iLen;i++)
{
if(mystr[i].Equals(name))
{
isExist=true;
break;
}
}
//显示结果
if(isExist)
console.Writeline("存在{0}",name);
else
console.Writeline("不存在{0}",name);
console.Readky();
你的代码是不值得学习的,应该是一个用java的人写的
原汁原味的C#写法,只要3行
string name = Console.ReadLine();
string[] mystr = new string[] { "陈一", "陈二" };
Console.WriteLine("您查到的名字{0}{1}存在", name, mystr.Contains(name) ? "" : "不");
先不管你的代码杂乱不是纯正的c#风格的代码,也不知道你readline的是一个名字还是一串名字,看你的for循环就知道你查不出东西的,因为你是按照一个字去匹配你的那两个名字的,当然是错的。如果是一个名字可以直接==用不到for循环的,既然是循环肯定就是一串名字了,你可以split成一串数组用contains这个方法就能匹配你那两个名字,不用你自己去循环遍历的
我好想明白楼主的意思了,起床附代码
string name = Console.ReadLine();
string[] mystr = new string[] { "陈一", "陈二" };
if (mystr.Contains(name))
Console.WriteLine("您查到的名字{0}存在", name);
else
Console.WriteLine("您查到的名字{0}不存在", name);
Console.WriteLine("查找完毕");
Console.ReadKey();
你吧图片放代码里了。。。。没人看的到的除非把你的网址贴出去。我给你解释解释吧,你的for循环是错的,你的本意是for (int i = 0; i < mystr.Length; i++)去遍历你的mystr数组,,至于为什么陈一能匹配到(是因为误打误撞匹配到的),陈二匹配到两个。是因为你输入名字是两个字可以循环两次,如果输入的是陈一循环到mystr[0]是正确的然后break,如果输入的名字是陈二循环到mystr[0]是错误的的然后break,如果没加break继续匹配mystr[1]是正确的所以会有两行一个不存在一个存在而不是你说的两行不存在。如果你输入的名字是三个字就直接报错了,因为索引不到mystr[2]