1

行の最初の文字であるレコード タイプによって、ファイル内の特定の行の出現回数をカウントしようとしています。合計行数は正しく、「その他」の数も正しいのですが、切り替え結果の行数が合計されません。foreach は 13 回実行されていますが、カウントが更新されていません。

static void Main(string[] args)
{
int i1LineCount = 0;
int i2LineCount = 0;
int i3LineCount = 0;
int i4LineCount = 0;
int iOther = 0;
int iCount = File.ReadLines(@"c:\single.txt").Count();

foreach (string line in File.ReadLines(@"c:\single.txt"))
{
String sFirstChar = line.Substring(0, 1);
switch (sFirstChar)
{
    case "1":
    i1LineCount = i1LineCount+1;
    break;
    case "2":
    i2LineCount = i2LineCount+1;
    break;
    case "3":
    i3LineCount = i3LineCount+1;
    break;
    case "4":
    i4LineCount = i4LineCount+1;
    break;
    default:
    iOther = iOther+1;
    break;
}
}
Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i1LineCount);
Console.WriteLine("3 lines = " + i1LineCount);
Console.WriteLine("4 lines = " + i1LineCount);
Console.WriteLine("Other lines = " + iOther);
}

私が読んでいるtxtファイルは次のようになります(#の前に ' がないと、それなしでは表示できませんでした):

'#  
\  
1  
4  
4  
2  
2  
2  
3  
2  
4  
4  
'#

私が得ている結果は次のとおりです。

Line Count = 13  
1 lines = 1  
2 lines = 1  
3 lines = 1  
4 lines = 1  
Other lines = 3  

私は得ているはずです

Line Count = 13  
1 lines = 1  
2 lines = 4  
3 lines = 1  
4 lines = 4  
Other lines = 3  
4

4 に答える 4

2

i1LineCountあなたは4回書き出しています。

コードは次のとおりです。

Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i2LineCount);
Console.WriteLine("3 lines = " + i3LineCount);
Console.WriteLine("4 lines = " + i4LineCount);
Console.WriteLine("Other lines = " + iOther);
于 2013-10-10T19:45:38.003 に答える
0

1毎回行数を出力しています:

Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i1LineCount);
Console.WriteLine("3 lines = " + i1LineCount);
Console.WriteLine("4 lines = " + i1LineCount);
Console.WriteLine("Other lines = " + iOther);

i2、i3、i4 などを印刷する必要があります。

于 2013-10-10T19:45:44.300 に答える
0

Console.WriteLinesを確認してください...

Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i1LineCount);
Console.WriteLine("3 lines = " + i1LineCount);
Console.WriteLine("4 lines = " + i1LineCount);
Console.WriteLine("Other lines = " + iOther);

する必要があります...

Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i2LineCount);
Console.WriteLine("3 lines = " + i3LineCount);
Console.WriteLine("4 lines = " + i4LineCount);
Console.WriteLine("Other lines = " + iOther);
于 2013-10-10T19:47:51.723 に答える
0

あなたi1LineCountはおそらくこれを必要とするでしょう:

Console.WriteLine("Line Count = " + iCount);
Console.WriteLine("1 lines = " + i1LineCount);
Console.WriteLine("2 lines = " + i2LineCount);
Console.WriteLine("3 lines = " + i3LineCount);
Console.WriteLine("4 lines = " + i4LineCount);
Console.WriteLine("Other lines = " + iOther);

また、配列を使用することをお勧めします。

于 2013-10-10T19:51:53.917 に答える