【发布时间】:2013-11-20 10:36:45
【问题描述】:
一些背景:
我目前正在学习 C# 并从事 ChatBot 项目。 Chatbot 将从用户输入中学习,通过解析每个用户输入的句子,并将每个单词放入字典中,句子中的每个单词作为键,后面的单词作为字典中的值。
我的第一个绊脚石是尝试循环遍历字符串以将单词放入字典中。
我的代码:
class Program
{
static string userInput;
static string val;
static string key;
static Dictionary<string, string> dict = new Dictionary<string, string>();
static void Main(string[] args)
{
userInput = Console.ReadLine();
string[] wordbits = userInput.Split(' ');
for (int i = 0; i < wordbits.Length; i++)
{
key = wordbits[i];
for (int j = 0; j < wordbits.Length; j++)
{
val = wordbits[(j + 1)];
}
dict.Add(key, val);
}
}
}
我遇到的错误是IndexOutOfRangeException,我认为这是因为循环正在句子中最后一个单词之后寻找一个单词,但该单词不存在。
关于如何解决此问题的任何建议?
【问题讨论】:
-
尽量不要在你的 for 循环中包含最后一个单词,并在循环之后单独添加它
-
整个过程非常简单,如下所示:
wordbits.ToDictionary(x => x, x => wordbits[wordbits.Length - 1]),但我不确定你是否喜欢。或者只是wordbits.ToDictionary(x => x, x => wordbits.Last())
标签: c# parsing loops dictionary