我有一串数字,如下所示。然后,我有一个随机数字,如下所示。如果我想查看随机数是否等于字符串中的数字,我该怎么做呢?
public string[] List = { "5", "3","9" };
int test = random.Next(1, 10);
现在我有以下内容。所有这些都适用于我的脚本,除了if(test == number),Test是定义的随机数,而我正在试图弄清楚如何将它引用到config.List,这是5的列表, 3,和9.因为你不能在同一个if语句中使用字符串和int。
foreach (string number in config.List)
{
if (test == number)
{
TSPlayer.All.SendSuccessMessage("counting count = {0} number = {1}", count, test);
}
if (test >= 5)
{
int amount = 200;
int monsteramount = 303;
NPC npcs = TShock.Utils.GetNPCById(monsteramount);
TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
break;
}
}
}
}
答案 0 :(得分:0)
如果我正确理解您的问题,您需要将整数的string
表示转换为int
。
您可以将字符串转换为int,如下所示:
string str = "5";
int val = Convert.ToInt32(str); // val will be 5.
如果您不能信任您的输入(即,您无法100%确定字符串是有效数字),那么您可以使用Int32.TryParse
,如下所示:
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
// conversion was successful, val == 5
} else {
// conversion failed.
}
或者,您可以将int
转换为string
,这最容易做到:
int val = 5;
string str = val.ToString();
<强>更新强>
为了更具体,您需要使用第一种方法,如下所示:
foreach (string number in config.List)
{
var val = Convert.ToInt32(number);
if (test == val)
{
// ...
}
...
}
或者您需要使用第二种方法,如下所示:
foreach (string number in config.List)
{
if (test.ToString() == number)
{
// ...
}
...
}
不管怎样,你必须确保你的类型匹配。
更新2
这就是你问题中的代码,现在(结合了顶部和底部),只有一个更改,这应该会使这一个编译错误消失:
public string[] List = { "5", "3","9" };
int test = random.Next(1, 10);
foreach (string number in config.List)
{
if (test.ToString() == number) // This is the line I changed
{
// do your thing
}
if (test >= 5)
{
int amount = 200;
int monsteramount = 303;
NPC npcs = TShock.Utils.GetNPCById(monsteramount);
TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
break;
}
}
答案 1 :(得分:0)
var listOfInts = List.Select(s => int.Parse(s));
if(listOfInts.Contains(test))
{
// Do stuff
}