这学期学 C#,老师布置了个问题:
场景:请输出你的青蛙旅行了多长时间。在该场景中,先输出一句话“青蛙出去旅行了”,让程序睡眠几秒(随机产生一个 5~10 秒的数值),睡眠完毕后计算间隔时间,最后输出“青蛙回家,它共旅行了?秒”。其中有两部分内容未在课堂上讲过,请自行上网百度需要什么方法、什么类或什么命名空间,并编写代码实现。
时间间隔可以通过 DateTime 来计算。 随机产生数值也单的:
Random ran = new Random();
int n = ran.Next(5, 10);
关键是让程序睡眠,这怎么整?
1
huiyifyj OP 程序睡眠程序怎么一个机制,之前碰 js 看到过相关函数
|
2
GordianZ MOD |
5
oh 2018-03-25 14:06:07 +08:00 via iPhone 1
思路反了吧,看你这个逻辑,应该是先产生一个要睡眠的时间 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
huiyifyj OP @oh 我也疑问啊,但老师要求用 DateTime 前后时间计算后,输出时间,我也好奇,这有点让人想不透,就像明明知道答案却一定要拐着弯求结果
|
8
justinwu 2018-03-25 16:56:32 +08:00 via iPhone 2
@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 1
这个应该就是单纯的 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); } |