2017-01-18 22 views
0

この問題を解決するために、入力ファイルからアルファベット順に文字列全体が表示されるように出力ファイルを取得できません。文字列を配列に変換し、アルファベット順に並べ替えて文字列に戻します。

マイ入力ファイルがありません:(三行の間には間隔)

eafcd

FGHIJ

LK

出力ファイルはなく

:三行の間に(何の間隔は)

fghij

lk

私は問題が私のアルファベット順の方法にあると信じていますが、出力ファイルに文字の一部が表示されない理由がわかりません。

ありがとうございました!

using System; using System.IO;

名前空間TestFileIO { クラスfileFileIO { プライベート静的な文字列fooという。

static void Main(string[] args) 
    { 
     StreamWriter writer = null; 

     writer = new StreamWriter(@"C:\Files\OutputWrite2.txt"); 
     Console.SetOut(writer); 

     Console.SetIn(new StreamReader(@"C:\Files\InputRead2.txt")); 
     string letters = Console.ReadLine(); 

     foo = alphabetize(letters); 

     string line = foo; 
     while ((line = Console.ReadLine()) != null) 
     { 
      string newLine = line; 
      Console.WriteLine(newLine); 
     } 
     writer.Close(); 

     StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput()); 
     standardOutput.AutoFlush = true; 
     Console.SetOut(standardOutput); 

     Console.WriteLine("Alphabetized all characters in requested file and wrote to output file."); 

    } 
    public static string alphabetize(string letters) 
    { 
     char[] line = letters.ToCharArray(); 
     Array.Sort<char>(line); 
     return new string(line); 
    } 
} 

}

答えて

0
while ((line = Console.ReadLine()) != null) 
    { 
     string newLine = line; 
     Console.WriteLine(newLine); 
    } 

Console.ReadLine()しばらく状態は 'ライン' 変数の内容をoverwrittingれます。これが、入力ファイルの最初の行に欠落している理由です。

次のコードは要件を満たす必要があります。

 static void Main(string[] args) 
    { 
     StreamWriter writer = null; 

     writer = new StreamWriter(@"D:\OutputWrite2.txt"); 
     Console.SetOut(writer); 

     Console.SetIn(new StreamReader(@"D:\InputRead2.txt")); 
     string letters = Console.ReadLine(); 
     while (letters != null) 
     { 
      var foo = alphabetize(letters); 
      string line = foo; 
      string newLine = line; 
      Console.WriteLine(newLine); 
      letters = Console.ReadLine(); 
     } 
     writer.Close(); 

     StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput()); 
     standardOutput.AutoFlush = true; 
     Console.SetOut(standardOutput); 

     Console.WriteLine("Alphabetized all characters in requested file and wrote to output file."); 

    } 
    public static string alphabetize(string letters) 
    { 
     char[] line = letters.ToCharArray(); 
     Array.Sort<char>(line); 
     return new string(line); 
    } 
関連する問題