2017-05-08 3 views
0

私の質問のトピックが見えるかもしれませんが、私の質問を理解してください。 私は私の問題を解決するために使用していますC#のコードがあります。私はこのプログラムを実行し、テストケースの入力をコピー&ペーストするとcodechefの問題を解決する際に余分な入力を求めているConsole.ReadLine()

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text.RegularExpressions; 

namespace Chef 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int t = int.Parse(Console.ReadLine()); 
      for (int i = 0; i < t; i++) 
      { 
       String data = Console.ReadLine(); 
       String output = ""; 
       if (data.Contains("C") && data.Contains("E") && data.Contains("S")) 
       { 
        if (data.LastIndexOf('C') > data.LastIndexOf('E')) 
         output = "no"; 
        else if (data.LastIndexOf('E') > data.LastIndexOf('S')) 
         output = "no"; 
        else 
         output = "yes"; 
       } 
       else if (data.Contains("C") && data.Contains("E")) 
       { 
        if (data.LastIndexOf('C') > data.LastIndexOf('E')) 
         output = "no"; 
        else 
         output = "yes"; 
       } 
       else if (data.Contains("E") && data.Contains("S")) 
       { 
        if (data.LastIndexOf('E') > data.LastIndexOf('S')) 
         output = "no"; 
        else 
         output = "yes"; 
       } 
       else if (data.Contains("C") && data.Contains("S")) 
       { 
        if (data.LastIndexOf('C') > data.LastIndexOf('S')) 
         output = "no"; 
        else 
         output = "yes"; 
       } 
       else 
        output = "yes"; 
       Console.WriteLine(output); 
      } 
      Console.ReadKey(); 
     } 
    } 
} 

直接、それは1つの余分の入力を要求します。テストケースはこちら

5 
CES 
CS 
CCC 
SC 
ECCC 

入力を入力して実行すると、正常に動作します。私が最初に出力プログラム

を実行する画像を添付したより詳細な説明について

は、そのまま私が全体の入力を貼り付けて、それが最後のテストケースまで実行されたことを示しています。

第二の出力を示し、私は

This output shows that I have pasted the whole input as it is and it ran until last test case

This output shows after I have given an input like I have hit enter

を入力してヒットしているように私が入力を与えた後、私は何の意味もなされている場合、私は知らないが、誰もが同じことを得た場合状況が解決したら、私を助けてください。

+2

これをトレースすると、理由がわかります。 – BugFinder

+0

BugFinderの意味は次のとおりです。この行にブレークポイントを設定します。 'int t = int.Parse(Console.ReadLine());'。問題を再現するような方法でプログラムを実行します。 F10キーを使用して、デバッガの各行をステップ実行します。 Visual Studioでウォッチウィンドウを使用して、各ステップですべての変数を調べます。ある時点で、問題を発見します。 –

+0

入力に「5」を入力したため、ループは5回進みます。 'String data = Console.ReadLine();'行は5回呼び出されます。プログラムが入力を5回尋ねることを意味します。 –

答えて

4

ご入力:

5 
CES 
CS 
CCC 
SC 
ECCC 

は改行が続いていません。したがって、コンソールはEnterキーを押して最後の行を読み取ることができるのを待ちます。

+0

ああ、私は今理解しています。ご回答有難うございます。 –

関連する問題