所以我在这里有这个代码,它应该检测是否有人是男性还是女性。基本上,我们有一个软件可以将我们连接到手机上的不同人,并且他们的名字随时可用。这应该(理论上)做的是检测数组中人的姓名和性别,并将其输入到我们的表单中。我在这里包含了一些代码示例,特别是那些不起作用的部分,我想知道你们是否有任何线索为什么会这样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenderChecker
{
class Class
{
public static void Check(string stringy)
{
int gender = 0;
string[] arrayexample = { "Example One Male", "Example Two Female" };
if (arrayexample.Contains(stringy))
{
int arrayPosition = arrayexample.IndexOf(arrayexample, stringy); //part that doesn't work
}
}
static void Main(string[] args)
{
genderChecker("Example One");
}
}
}
任何人都可以告诉我一种不同的方法将数组位置保存为整数,因为这段代码根本不起作用而且有点令人生气。
谢谢你, MTS
答案 0 :(得分:4)
IndexOf()是Array类的静态方法。
改为:
arrayPosition = Array.IndexOf(arrayexample, stringy);
如果字符串不在数组中,则返回-1
答案 1 :(得分:1)
您的代码将循环两次;你最好不要使用for循环吗?
public static void Check(string stringy)
{
int gender = 0;
string[] arrayexample = { "Example One Male", "Example Two Female" };
var arrayPosition = -1;
for (var i = 0; i < arrayexample.Length; i++)
{
if (arrayexample[i] == stringy)
{
arrayPosition = i;
break;
}
}
}
答案 2 :(得分:0)
public static void Check(string stringy)
{
int gender = 0;
string[] arrayexample = { "Example One Male", "Example Two Female" };
for(int I=0;i<arrayexample.Length;i++)
{
if (arrayexample[i].Contains(stringy))
{
int arrayPosition = i; //part that doesn't work
}
}
}
答案 3 :(得分:0)
试试这个。 无需在Indexof
中包含数组参数int arrayPosition = arrayexample.IndexOf(stringy);
答案 4 :(得分:0)
根据您的评论,您实际上并未尝试在数组中查找字符串。您实际尝试做的事情是将字符串映射到性别。您完全使用错误的工具完成该任务(并使您的生活变得困难)。字典将值映射到其他值;他们是你需要的。
public enum Gender { Male, Female }
private Dictionary<string, Gender> _mapping = new Dictionary<string, Gender> {
["Name One"] = Gender.Male,
["Name Two"] = Gender.Female,
};
// now do something with _mapping[name]