我有几个函数,我知道正确工作。一个用正则表达式计算文本框中单词的数量,另一个用正则表达式计算同一文本框中特定单词(字符串)的实例。我确信这些都会返回预期的值。DataGrid问题 - 值总是显示0?
但是,我显然搞砸了函数来以某种方式填充我的datagrid,因为keywordcount总是返回为零,密度也是如此。
这里是我的代码:
public List<KeywordDensity> LoadCollectionData()
{
string thearticle = txtArticle.Text;
string[] keywordsarray = txtKeywords.Text.Split('\n');
bool isincluded = false;
int keywordcount = 0;
int thedensity = 0;
List<KeywordDensity> lsikeywords = new List<KeywordDensity>();
foreach (string s in keywordsarray)
{
if (s.Trim() != "")
{
keywordcount = KeywordCount(thearticle, s);
thedensity = keywordcount/WordCount(thearticle);
if (thearticle.Contains(s))
{
isincluded = true;
}
else
{
isincluded = false;
}
lsikeywords.Add(new KeywordDensity()
{
included = isincluded,
keyword = s,
occurences = keywordcount.ToString(),
density = thedensity.ToString()
});
}
}
return lsikeywords;
}
编辑@ 8:30 AM MST:想通了这个问题的一部分。使用“\ n”作为分隔符不起作用。显然,它只是将整个事件“分裂”成一个大块,包括回车和提交。我将它改为“\ r”,现在至少“Included”和“Occurences”部分工作正常。
现在唯一的问题是,“密度”不起作用。我意识到它不能被声明为int;但它仍然总是返回0 - 即使我将这个密度声明为float或var。
以下是否有问题?
thedensity = keywordcount/wordcount;
此外 - .ToString()函数截断小数点加上所有的东西过去吗?例如,如果一个变量的值是0.43,它只会转换为0?如果情况并非如此,我应该使用哪种变量类型?我会认为浮动是适当的。
再次感谢!
EDIT @ 8:45 MST:太糟糕了,我不能接受多个答案。 '\ r'和var类型都是问题。我没有意识到你不能通过除以两个整数来计算浮点数。当我将源变量更改为浮点以及密度变量时,它也起作用。
双谢!
-Sootah
我假设数据类型被绑定为DataGrid中的项目是KeywordDensity。既然你向我们保证KeywordCount正在正常工作,那么你就没有向我们展示`KeywordDensity`的代码或者DataGrid的Xaml。 – AnthonyWJones 2011-01-14 12:23:44