2017-12-09 22 views
0

私は分単位のプログラム(クラス用)を作成しており、私が研究しているものから、になるはずです。基本的に、タイマーが10秒間ヒットした場合は、ストップウォッチを止めて(これは必須ではありませんが)、ユーザーがもうタイピングをやめないようにします。どうすればこれを達成できますか?ユーザーがEnterキーを押すまで、それはあなたのプログラムに制御を返さないよう特定の時間にストップウォッチを停止するにはどうすればよいですか?

public void Timer30() 
    { 
     double userCharcount = 0; 
     string userType; 
     int timeInSeconds = 10; 


     //new instance of stopwatch 
     Stopwatch stopWatch = new Stopwatch(); 

     //call level 1 words from wordbank 
     Console.WriteLine(WordBank.LevelOneWords); 
     stopWatch.Start(); 

     //**this doesn't seem to work** 
     if (stopWatch.Elapsed.Seconds >= timeInSeconds) 
     { Console.WriteLine("Time's up! Nice work."); 
      stopWatch.Stop(); 
      Console.ReadKey(); 
     } 

     userType = Console.ReadLine(); 
     stopWatch.Stop(); 


     //capture number of characters user types to calculate WPM 
     userCharcount = userType.Length; 

     // Get the elapsed time as a TimeSpan value. 
     TimeSpan ts = stopWatch.Elapsed; 

     // Format and display the TimeSpan value. 
     string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}" , 
      ts.Hours , ts.Minutes , ts.Seconds , 
      ts.Milliseconds/10); 
     Console.WriteLine("\nNice job! You finished in " + elapsedTime + "!"); 
     Thread.Sleep(2000); 
     //CalculateWPMEasy(userCharCount); 

    } 

答えて

1

[OK]を、のは、あなたのコードが何をするのか見ていきましょう:

  1. Console.WriteLine(WordBank.LevelOneWords);。 [OK]をコンソールにいくつかの単語を印刷します。このステートメントは正常に終了し、実行は次のステートメントに進みます。
  2. stopWatch.Start();。さて、あなたはストップウォッチを始める。時間が刻々と始まります。実行は次のステートメントに進みます。
  3. if (stopWatch.Elapsed.Seconds >= timeInSeconds)。さて、の直後に、のストップウォッチを開始しました。数ナノ秒後、多分? timeInSecondsが0より大きい値の場合、stopWatch.Elapsed.Seconds >= timeInSecondsはfalseになります。
  4. 実行が経つ...あなたは秒は、ステップ2と3の間で行くだろうと

いつ、どのように期待していたのですか?

これはどのように修正しますか?まあ、簡単な方法は、彼がどんなに遅くても、ユーザーが単語を入力させることです:userType = Console.ReadLine();それだけでは経過時間をチェックし、timeInSecondsより大きい場合は彼が遅すぎることをユーザーに知らせます。

+0

ありがとう! –

2

あなたは、その場合にはConsole.ReadLine()を使用することはできません。ループ内でConsole.ReadKey()を使用してください。タイムアウトがタイムアウトしていないことを確認します。

関連する問題