A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张其辉 中级黑马   /  2012-12-8 21:48  /  1352 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张其辉 于 2012-12-9 15:37 编辑

下面是做的一道题,游戏部分简单,重点是用第二个线程控制计算出第一个的时间该怎么做??想了好久还没想出来办法,希望大侠指点:

随机生成1~99之间的一个整数,让用户输入去猜!用户可以无限次的去猜!直到猜对为止!如果猜对了,程序打印所用的时间(秒数)。
        main来运行游戏;
        再写一个线程来运行计时;
        计时线程的任务是一个循环;
        这个循环需要使用一个boolean类型的属性来控制;
        计时线程需要一个int类型属性来计时;
        每间隔一秒计时一次;
        当外界需要停止计算线程时,可以把计时线程的boolean属性修改为false;
        在main运行游戏之前开始启动计时线程;
        然后main再去运行游戏;
        游戏方法是个死循环,直到猜对了为止才会结束;
        当游戏方法结束后,main需要停止计时线程;
        然后打印计时线程提供的时间。

评分

参与人数 2技术分 +2 收起 理由
刘芮铭 + 1
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
  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 16:01

评分

参与人数 2技术分 +2 收起 理由
刘芮铭 + 1
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
做出来了,谢谢{:soso_e183:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马