char到字符串错误

时间:2012-01-19 17:45:58

标签: c# string char

我目前距离工作计划只有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'?

7 个答案:

答案 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函数就可以了。 enter image description here

答案 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
}