我正在尝试编写一个简单的应用程序,以允许用户键入字母,并找出它在数组中的位置,然后将该位置替换为字母k。
我不知道如何在特定位置替换char,程序给出的奇怪值是-1。
感谢您的帮助。
源代码:
class Program
{
static void Main(string[] args) {
Random r = new Random();
string[] d = {"a" , "b" , "c" , "d" };
string randomString= "";
for (int i= 0; i < 5; i++)
{
randomString = randomString + d[r.Next(d.Length)];
}
Console.WriteLine("Debug: Random string output: " + randomString);
char[] charArray = randomString.ToCharArray();
Console.WriteLine("Type one char of random String to find postion of it:");
string userinput = Console.ReadLine();
int pos = Array.IndexOf(charArray , userinput);
Console.WriteLine(userinput +" is at " + pos + ".");
//Something to replace a char at that position with k
// Here display modified string with "k"
Console.WriteLine(randomString);
Console.ReadLine();
/*
* Console output:
Debug: Random string output: bbccb
Type one char of random String to find postion of it:
c is at -1
*/
}
}
答案 0 :(得分:1)
问题出在这一行
int pos = Array.IndexOf(charArray , userinput);
您有一个字符数组,但您正在搜索字符串
更改为
int pos = Array.IndexOf(charArray , userinput[0]);
当然,您还应该检查用户是否键入了任何内容
答案 1 :(得分:0)
您的值userinput
是一个字符串,因此与数组中的任何单个字符相比都不匹配。您可以使用userinput[0]
获取字符串中的第一项,但是如果用户输入一个空字符串,则将崩溃(一个空字符串没有有效的“位置0”)。
相反,请尝试以下操作:
int pos = Array.IndexOf(charArray , userinput.FirstOrDefault());
如果有则返回第一个字符;如果不是,它将返回一个值为char
的{{1}},该值与数组中的任何内容都不匹配,也不会导致程序崩溃。
哦,还有另一件事:要在特定位置替换字符,只需直接设置该位置的值:
00