
这学期学 C#,老师布置了个问题:
场景:请输出你的青蛙旅行了多长时间。在该场景中,先输出一句话“青蛙出去旅行了”,让程序睡眠几秒(随机产生一个 5~10 秒的数值),睡眠完毕后计算间隔时间,最后输出“青蛙回家,它共旅行了?秒”。其中有两部分内容未在课堂上讲过,请自行上网百度需要什么方法、什么类或什么命名空间,并编写代码实现。
时间间隔可以通过 DateTime 来计算。 随机产生数值也单的:
Random ran = new Random(); int n = ran.Next(5, 10); 关键是让程序睡眠,这怎么整?
1 fengyj OP 程序睡眠程序怎么一个机制,之前碰 js 看到过相关函数 |
2 GordianZ 2018-03-25 13:49:39 +08:00 |
5 oh 2018-03-25 14:06:07 +08:00 via iPhone 思路反了吧,看你这个逻辑,应该是先产生一个要睡眠的时间 s,然后调用 thread.sleep(s) 让程序睡眠,睡眠结束之后直接输出 s 就行了,不用再计算两个时间差 |
6 ctsed 2018-03-25 14:23:42 +08:00 http://zh.lmgtfy.com/?q=C%23+%E7%9D%A1%E7%9C%A0 (来这问作业效率太低了) |
7 fengyj OP @oh 我也疑问啊,但老师要求用 DateTime 前后时间计算后,输出时间,我也好奇,这有点让人想不透,就像明明知道答案却一定要拐着弯求结果 |
8 justinwu 2018-03-25 16:56:32 +08:00 via iPhone @huiyifyj 严格来讲,thread.sleep 是不精确的,不是你让它 sleep 多少毫秒,醒来就是过了多少毫秒的,这受到线程调度、线程优先级、系统 CPU 负载等等影响。 |
9 qsnow6 2018-03-25 17:35:28 +08:00 c#节点难得这么热闹 |
10 MinQ 2018-03-25 20:06:45 +08:00 via Android 这个应该就是单纯的 thread.sleep 吧,要精确的话其实也行,把系统时间片调低就行了,API 是 timeBeginPeriod |
11 zingl 2018-03-25 23:47:32 +08:00 > 请自行上网百度 seriously?现在大学教面向百度编程了啊 |
13 thereisnoif 2018-05-07 19:22:43 +08:00 void Main() { Console.WriteLine("青蛙出去旅行了"); int travelDuration = 0; var rand = new Random(); int time = rand.Next(5, 10); Travel(time).GetAwaiter().GetResult(); travelDuration += time; Console.WriteLine($"青蛙回家,它共旅行了{travelDuration}秒"); } async Task Travel(int seconds) { await Task.Delay(seconds * 1000); } |