我目前距离工作计划只有2个错误。我将发布包含错误的行及其变量的定义,最后发布错误。请告诉我哪里出错了。谢谢。
private Dictionary<string, bool[]> letterData = new Dictionary<string, bool[]>();
public char[] mapNeurons()
{
char[] map = new char[this.letters.Items.Count];
for (int i = 0; i < map.Length; i++)
{
map[i] = '?';
}
for (int i = 0; i < this.letters.Items.Count; i++)
{
double[] input = new double[Form1.DOWNSAMPLE_HEIGHT * Form1.DOWNSAMPLE_WIDTH];
char ch = ((string)(this.letters.Items[i]))[0];
bool[] data = this.letterData[ch]; //line contains errors
for (int j = 0; j < input.Length; j++)
{
input[j] = data[j] ? 0.5 : -0.5;
}
int best = this.network.Winner(input);
map[best] = ch;
}
return map;
}
这是错误
错误1'System.Collections.Generic.Dictionary.this [string]'的最佳重载方法匹配有一些无效的参数
错误2参数'1':无法从'char'转换为'string'
我使用Char代替String,因为如果使用String,它将返回加载的字符串的整行,我只想返回字符串的第一个字母
例如:data = A1:000001100000000110000000111000000011100000001
如果使用字符串,它将返回整行,我只是想让它返回'A'
新的识别问题: 当我输入数据时,我将数据放入'A1'键,这解释了为什么我使用字符串,所以当它没有找到'A1'因为它是char时,它只是找到'A'这就是为什么它返回'?',是否可以使用字符串n只读取字符串行中第一个字符'A'?
答案 0 :(得分:4)
首先,您需要使用Add() method将字词添加到字典中。
其次,你的字典的键是一个字符串,所以你需要使用一个字符串作为索引...你可以通过调用char实例上的ToString()
来获取字符串的字符串表示。
char ch = 'x';
private Dictionary<string, bool[]> letterData = new Dictionary<string, bool[]>();
letterData.Add(ch.ToString(), new []{true, false});
bool[] data = this.letterData[ch.ToString()];
或者将索引更改为char:
char ch = 'x';
private Dictionary<char, bool[]> letterData = new Dictionary<char, bool[]>();
letterData.Add(ch, new []{true, false});
bool[] data = this.letterData[ch];
答案 1 :(得分:2)
bool[] data = this.letterData[ch.ToString()];
答案 2 :(得分:1)
已更新
试试这个:
if(this.letterData.ContainsKey(ch.ToString()))
bool[] data = this.letterData[ch.ToString()];
或
if(this.letterData.ContainsKey(ch.ToString()))
bool[] data = this.letterData[ch+""];
答案 3 :(得分:1)
要将char转换为字符串,可以调用ToString()
。这是问题的解决方案。
但是hafizhans正在制定一些计划,他已经问过question,他将Dictionary<char, bool[]>
转换为Dictionary<string, bool[]>
。现在他将数据从字典存储到文本文件中,就像这样
A1:001110000111100001010100
现在,在阅读本文时,他只需要A1
部分,所以Split
函数就可以了。
答案 4 :(得分:0)
如何改为:
string sCh = ch.ToString();
bool[] data = null;
if (this.letterDate.ContainsKey(sCh)
{
data = this.letterData[sCh];
}
此外,您可能需要考虑将字典上的密钥更改为Char。
答案 5 :(得分:0)
变量ch
很可能是char,你必须使用字符串
答案 6 :(得分:0)
尝试以下方法:
char charString = 'a';
if (letterData.ContainsKey(charString.ToString()))
{
// Found
}