我正在努力学习,(我是编码的新手)
这是我写的
static void Main(string[] args)
{
string username = "James";
string[] Userclass = new string[3] { "Mage", "Warrior", "Assasin" };
Console.WriteLine("What class will you be? You can choose from Mage, Warrior, Or Assasin: ");
if (Userclass.Contains("Mage"))
{
String Message = "You are a strong Willed Mage " + username;
Console.WriteLine(Message);
}
if (Userclass.Contains("Warrior"))
{
String Message = "Your are a valiant Warrior " + username;
Console.WriteLine(Message);
}
if (Userclass.Contains("Assasin"))
{
String Message = "You are a vigilant Assasin " + username;
Console.WriteLine(Message);
}
Console.ReadLine();
}
但是如果我定义:
string Userclass = Console.Readline();
我得到的错误是它
can't convert string[] to string
感谢您的帮助!
最佳答案
好的,有几件事:
你的 UserClass
是一个 array
.它会保存项目,但除非你附加到它,否则你不能向它写入用户输入。 Here是 Arrays
的引用在来自 MSDN 的 C# 中。
您正在使用 .Contains()
在 string array
上而不是 string
.虽然从逻辑上讲,是的,string array
确实包含这些值。虽然,如果它实际运行/编译,所有 if statements
将运行 true 而不是从用户输入中选择。
这让我想到了下一件事——你要求 user input
但在如图所示的 Main()
中从未真正允许它方法。最常见的方式(我见过的)是这样的:
string input = Console.ReadLine();
哪个,我看到你正在尝试实现,所以这不是问题:)
此代码适用于(我将分解我的更改):
static void Main(string[] args)
{
string userName = "James";
string[] userClass = new string[3] { "mage", "warrior", "assassin" };
Console.WriteLine("What class will you be? You can choose from Mage, Warrior or Assassin:");
string input = Console.ReadLine();
if (input.ToLower() == userClass[0])
{
string Message = "You are a strong Willed Mage " + userName;
Console.WriteLine(Message);
}
else if (input.ToLower() == userClass[1])
{
string Message = "Your are a valiant Warrior " + userName;
Console.WriteLine(Message);
}
else if (input.ToLower() == userClass[2])
{
string Message = "You are a vigilant Assassin " + userName;
Console.WriteLine(Message);
}
else
Console.WriteLine("No proper class selected...");
Console.ReadLine();
}
string userName
与您的 string[] userClass
保持一致(我已将大写字母更改为驼峰式)。拥有这些 userClass
没有问题(我认为) s 存储在 array
中, 只要您检查 array
适本地。
而不是检查 string[] userClass
array 包含这些项目,因为我们知道它按照我们编写的方式运行,并且如前所述,它将始终运行 true。相反,我们检查是否 user input
匹配数组中的某些内容。
我创建了 string input = Console.ReadLine()
允许用户输入,然后我检查 input
针对 string[] userClass
值。我添加了 .ToLower()
并将数组值更改为全部小写。这样,如果用户输入 mAgE
而不是 Mage
, 不会抛出错误。
另一种解决方法,如果您想避免使用 array
, 是使用 switch :
switch (input.ToLower())
{
case "mage":
Console.WriteLine($"You are a strong Willed Mage {userName}");
//assign user class
break;
case "warrior":
Console.WriteLine($"Your are a valiant Warrior {userName}");
//assign user class
break;
case "assassin":
Console.WriteLine($"You are a vigilant Assasin {userName}");
//assign user class
break;
}
关于c# - 将字符串数组转换为字符串以获得 if else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616313/