黑马程序员技术交流社区
标题:
一道有关多线程的题
[打印本页]
作者:
张其辉
时间:
2012-12-8 21:48
标题:
一道有关多线程的题
本帖最后由 张其辉 于 2012-12-9 15:37 编辑
下面是做的一道题,游戏部分简单,重点是用第二个线程控制计算出第一个的时间该怎么做??想了好久还没想出来办法,希望大侠指点:
随机生成1~99之间的一个整数,让用户输入去猜!用户可以无限次的去猜!直到猜对为止!如果猜对了,程序打印所用的时间(秒数)。
main来运行游戏;
再写一个线程来运行计时;
计时线程的任务是一个循环;
这个循环需要使用一个boolean类型的属性来控制;
计时线程需要一个int类型属性来计时;
每间隔一秒计时一次;
当外界需要停止计算线程时,可以把计时线程的boolean属性修改为false;
在main运行游戏之前开始启动计时线程;
然后main再去运行游戏;
游戏方法是个死循环,直到猜对了为止才会结束;
当游戏方法结束后,main需要停止计时线程;
然后打印计时线程提供的时间。
作者:
李小锋
时间:
2012-12-9 14:47
import java.util.*;
import java.io.*;
import java.util.Scanner;
class CountTime implements Runnable
{
private boolean status ;
private long hour;
private long minues;
private long second;
private long ms;
private long starttime;
private long count;
CountTime(boolean status)
{
this.status = status;count = 0;
}
public boolean getStatus()
{
return status;
}
public void setStatus(boolean flag)
{
this.status = flag;
}
public void run()
{
starttime = System.currentTimeMillis();
while(!status)
{
try{
Thread.sleep(1000);
count++;
}
catch(Exception e)
{
}
finally
{
}
}
long times = System.currentTimeMillis()-starttime;
ms = times%1000;
second = times/1000%60;
minues = times/1000/60%60;
hour = times/1000/60/60;
System.out.println(count+"秒 游戏结束!用时"+hour+"时"+minues +"分"+second+"秒"+ms+"毫秒");
}
}
class game
{
public static void main(String argc[])
{
int num = (int)(Math.random()*100);
CountTime countTime = new CountTime(false);
Thread t1 = new Thread(countTime);
t1.start();
System.out.println("猜数字游戏开始,请输入1-99的数字");
while(!(countTime.getStatus()))
{
Scanner sc = new Scanner(System.in);
int temp = sc.nextInt();
if(num == temp) countTime.setStatus(true);
else
{
if(temp>num)
System.out.println("比随机数大!continue");
else
System.out.println("比随机数小!continue");
}
}
//System.out.println(num);
}
}
复制代码
作者:
张其辉
时间:
2012-12-9 15:37
做出来了,谢谢{:soso_e183:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2