-4

テキストファイルからテーブルを作成しようとしていますが、プログラムをコンパイルすると、入力された情報の後に表示されるはずのテーブルが表示されますが、テーブルは空白です。明らかに私はどこかで間違いを犯しています..あなたは助けることができますか?

   StreamReader swreNames = File.OpenText("Names.txt");

        do
        {
            Console.SetCursorPosition(15, 2);
            Console.Write("--- Names Table ---");
            Console.SetCursorPosition(10, 4);
            Console.Write("First Name");
            swrNames.WriteLine(firstname); // Reads from first name from file Names.txt
            Console.SetCursorPosition(10, Counter + 6); // Aligns first name within table settings 
            Console.SetCursorPosition(28, 4);
            Console.Write("Surname");
            swrNames.WriteLine(lastname); // Reads from last name from file Names.txt
            Console.SetCursorPosition(28, Counter + 6);
            Console.SetCursorPosition(48, 4);
            Console.Write("Age");
            swrNames.WriteLine(age); // Reads from age from file Names.txt
            Console.SetCursorPosition(48, Counter + 6);
            Console.ReadLine();
            Console.Clear();
        } while ((firstname = swreNames.ReadLine()) != null); //Writes out the input from the text file

OK、コードを編集して、問題があると思う場所を示しました。少し読みやすい形式になっているといいのですが。

助けてください。

4

2 に答える 2

2

さて、ファイルのコンテンツが次のような形式に従っているとしましょう。[first name] [last name]

Axl Rose
Joey Ramone
Steve Vai
BB King

したがって、コードは次のようになります。

        StreamReader fileContent = File.OpenText(@"C:\my-file.txt");

        Console.SetCursorPosition(15, 2);
        Console.Write("--- Names Table ---");
        Console.SetCursorPosition(10, 4);
        Console.Write("First Name");
        Console.SetCursorPosition(28, 4);
        Console.Write("Surname");

        int topOffset = 6;

        string currentLine = fileContent.ReadLine();

        while (!string.IsNullOrWhiteSpace(currentLine))
        {
            string firstName = currentLine.Split(' ')[0];
            string lastName = currentLine.Split(' ')[1];

            Console.SetCursorPosition(10, topOffset);
            Console.Write(firstName);
            Console.SetCursorPosition(28, topOffset);
            Console.Write(lastName);

            topOffset += 2;
            currentLine = fileContent.ReadLine();
        }

        fileContent.Dispose();

        Console.ReadLine();

これは最善の解決策ではなく、ファイルがこの形式と異なる場合があります。さて、今度はコードを書く番です。

于 2013-03-19T18:21:59.907 に答える
0

コメントが書いていると言っているときはファイルストリームから読んでおり、コメントが読んでいると言っているときは書いています。読み取ったデータをコンソールストリームに入れることはありません。

また、ファイルストリームの読み取り行全体を一度に1つずつファイル名に入れ、それを同じストリームに書き戻すこともあります...実際にはお勧めできません。

于 2013-03-19T18:02:58.000 に答える