我想将对象类型数组中的元素与用户输入进行比较。为此,我编写了以下代码。代码中没有错误,但我发现对象比较不能像我预期的那样工作。如何编辑我的代码以将用户输入与预定义数组进行比较?
class Program
{
static void Main(string[] args)
{
object[] Mathfunction = new object[] { '+','-','*','/'};
Console.WriteLine("Enter");
object input = Console.ReadLine();
for(int i=0;i<4;i++)
{
if (Mathfunction[i] == input)
{
Console.WriteLine("done");
Console.ReadLine();
}
}
}
答案 0 :(得分:3)
您将string
与盒装char
进行比较
那些不会是平等的。
您应该将变量声明为您使用的实际数据类型而不是object
;然后,编译器会告诉你你做错了什么,这样你就可以解决它。
答案 1 :(得分:1)
您是否有任何理由需要将char转换为对象?如果不是,我建议你将它转换回char []并进行比较。 否则,当您比较两个对象时,它实际上是比较两个引用,而不是(char)值。并且由于在启动数组时创建了一个对象,因此用户输入一个对象,其中两个永远不会相同,并且比较永远不会返回true。
答案 2 :(得分:1)
我现在按照我的预期更改了我的程序。
class Program
{
static void Main(string[] args)
{
object[] Mathfunction = new object[] { '+','-','*','/'};
Console.WriteLine("Enter");
String input = Console.ReadLine();
for(int i=0;i<4;i++)
{
String str = (Mathfunction[i].ToString());
if (String.Equals(str,input))
{
Console.WriteLine("done");
Console.ReadLine();
}
}
}
答案 3 :(得分:0)
尝试这样的事情,在你的代码中输入将在一个对象中,而你使用一个对象数组来存储字符,你可以这样做:
object[] Mathfunction = new object[] { '+', '-', '*', '/' };
Console.WriteLine("Enter");
object input = Console.ReadLine();
string[] inputString = input.ToString().Split(' ');
bool isEqual = true;
for (int i = 0; i < 4; i++)
{
if (Mathfunction[i].ToString() != inputString[i])
{
isEqual = false;
}
}
if (isEqual)
{
Console.WriteLine("done");
Console.ReadLine();
}