黑马程序员技术交流社区

标题: 一道有关多线程的题 [打印本页]

作者: 张其辉    时间: 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
  1. import java.util.*;
  2. import java.io.*;
  3. import java.util.Scanner;

  4. class CountTime implements Runnable
  5. {
  6.         private boolean status ;
  7.         private long hour;
  8.         private long minues;
  9.         private long second;
  10.         private long ms;
  11.         private long starttime;
  12.         private long count;
  13.         CountTime(boolean status)
  14.         {
  15.                 this.status = status;count = 0;
  16.         }
  17.         public boolean getStatus()
  18.         {
  19.                 return status;
  20.         }
  21.         public void setStatus(boolean flag)
  22.         {
  23.                 this.status = flag;
  24.         }
  25.         public void run()
  26.         {
  27.                 starttime = System.currentTimeMillis();
  28.                 while(!status)
  29.                 {
  30.                         try{

  31.                                 Thread.sleep(1000);
  32.                                 count++;
  33.                                
  34.                         }
  35.                         catch(Exception e)
  36.                         {
  37.                         }
  38.                         finally
  39.                         {
  40.                         }
  41.                 }
  42.                 long times = System.currentTimeMillis()-starttime;
  43.                 ms = times%1000;
  44.                 second = times/1000%60;
  45.                 minues = times/1000/60%60;
  46.                 hour = times/1000/60/60;
  47.                 System.out.println(count+"秒 游戏结束!用时"+hour+"时"+minues +"分"+second+"秒"+ms+"毫秒");
  48.         }
  49. }

  50. class game
  51. {
  52.         public static void main(String argc[])
  53.         {
  54.                 int num = (int)(Math.random()*100);
  55.                 CountTime countTime = new CountTime(false);
  56.                 Thread t1 = new Thread(countTime);
  57.                 t1.start();
  58.                 System.out.println("猜数字游戏开始,请输入1-99的数字");
  59.                 while(!(countTime.getStatus()))
  60.                 {
  61.                         Scanner sc = new Scanner(System.in);
  62.                         int temp = sc.nextInt();
  63.                         if(num == temp)        countTime.setStatus(true);
  64.                         else
  65.                         {
  66.                                 if(temp>num)
  67.                                         System.out.println("比随机数大!continue");
  68.                                 else
  69.                                         System.out.println("比随机数小!continue");
  70.                         }
  71.                 }
  72.                 //System.out.println(num);
  73.         }
  74. }
复制代码

作者: 张其辉    时间: 2012-12-9 15:37
做出来了,谢谢{:soso_e183:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2