我想在C#控制台中制作一个简单的秒表。当您按S键时,将启动秒表,而按Q键将使秒表停止。最后,经过的时间将以Hours:Min:Sec显示。到现在为止,秒表都已启动,但停止时却无法获得经过的时间。
SELECT
quotes.ID,max(feedbacks.submitted_at) as submitted_at,buyer_name
FROM quotes
INNER JOIN feedbacks
ON quotes.id = feedbacks.quote_id
group by quotes.ID,buyer_name
这是输出:
答案 0 :(得分:3)
您错过了一个循环。您可能按“ s”开始,而当您按“ q”时,您实际上是在点击最后一个Console.ReadLine()
如果添加循环,则一切正常:
static void Main(string[] args)
{
Console.WriteLine("The stopwatch, press S to begin and Q to stop");
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
stopWatch.Start();
var done = false;
while (!done)
{
var UserInput = Console.ReadLine();
switch (UserInput)
{
case "s":
stopWatch.Start();
break;
case "q":
stopWatch.Stop();
done = true;
break;
default:
Console.WriteLine("You did something wrong");
break;
}
}
// 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 / 2);
Console.WriteLine("RunTime " + elapsedTime);
Console.ReadLine();
}
希望这会有所帮助:)
答案 1 :(得分:1)
这有点作业,但是:
您的主要问题不是您的代码无法“工作”,而是您可以直接遍历代码的整个秒表部分。您没有循环来重复获取用户输入的内容,因此从本质上讲,用户最初输入的内容并不重要。尝试一下,在switch语句之后再睡一秒钟System.Threading.Thread.Sleep(1000)
,然后输入各种用户输入。
我建议您查看do while
循环,以使您的用户输入被重复接受。原则上,如果您能弄清楚如何循环输入,则代码的每个部分都可能起作用。
P.S。我不明白您为什么要用2来除以毫秒。这将在以后使您头疼。
答案 2 :(得分:-1)
您可以执行以下操作:
static void Main(string[] args)
{
Console.WriteLine("The stopwatch, press S to begin and Q to stop");
var UserInput = Console.ReadLine();
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
stopWatch.Start();
Decide:
switch (UserInput.ToLower())
{
case "s":
stopWatch.Start();
while (!Console.KeyAvailable)
{
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
Console.Clear();
// 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 / 2);
Console.WriteLine("RunTime " + elapsedTime);
Thread.Sleep(1000);
}
UserInput = Console.ReadLine();
if (UserInput.ToLower() != "q")
{
goto Decide;
}
break;
case "q":
stopWatch.Stop();
break;
default:
Console.WriteLine("You did something wrong");
break;
}
}