-2

その奇妙な、まあ私はファイルから文字を数える必要があります、そして後の計算でその情報を使用します、今その奇妙な部分、私は私のプログラムが各文字の外観を正しくカウントしているかどうかを確認したかったので、ctrl+からのmonodevelopの一致と私の結果を比較しましたたとえば、「i」文字の場合、結果は518monodevelopに561一致があり(大文字と小文字の区別がオンになっている)、プログラムがうまくカウントされないように見えるかもしれませんが、テストを行って別のファイルに書き直し、monodevelopで一致を再度チェックしました今、私の結果とmonodevelopは同じ場所で一致します。なぜそれが起こっているのですか?

ここにコードがあります

public Histogram (String nazwa)
    {
        histogram = new Dictionary<string,float>();
        StringBuilder plik = odczytPliku.odczyt(nazwa);
        n = 0;
        foreach(char w in plik.ToString())
        {
            if(!histogram.ContainsKey(new string(w,1)))
                histogram.Add(new string(w,1),1);
            else
                histogram[new string(w,1)]+=1;
            n++;
        }

    }
4

2 に答える 2

2
public Dictionary<char, int> Hist(string target)
    {
        return target.GroupBy(c => c)
            .ToDictionary(g => g.Key, g => g.Count());
    }

大文字と小文字を区別しないようにするには、次のように呼び出します。

var hist = Hist(target.ToUpperInvariant());
于 2012-11-21T19:32:54.473 に答える
2

次のコードは、文字列内の文字のヒストグラムを作成します。これは、文字列を正しく渡していることを前提としています。

public Dictionary<char,int> Histogram( String myString )
{
    Dictionary<char,int> hist = new Dictionary<char,int>()

    if( !String.IsNullOrEmpty(myString) )
    {
        for( int i = 0; i < myString.Length; i++ )
        {
            char c = myString[i];

            if(hist.ContainsKey(c))
            {
                hist[c] = hist[c] + 1;
            }
            else
            {
                hist.Add(c,1);
            }
        }
    }

    return hist;
}
于 2012-11-21T19:09:55.613 に答える