用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数

来源:互联网 发布:怎么在淘宝上搜店铺 编辑:程序博客网 时间:2024/05/22 17:34

用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要求第二个线程要等待第一个线程设置好要猜测的数。第一个线程设置好猜测数之后,两个线程还要相互等待,其原则是:第二个线程给出自己的猜测后,等待第一个线程给出的提示;第一个线程给出提示后,等待给第二个线程给出猜测,如此进行,直到第二个线程给出正确的猜测后,两个线程进入死亡状态。

import java.util.Random;    public class GuessNumber {        public static void main(String[] args) {          number num=new number("线程一");          num.start();          guess gue=new guess("线程二");          gue.start();      }    }  //给出整数的线程  class number extends Thread{      String name1;      private static int n;      number(String name){          name1=name;      }      public void run() {          //获取1~100的随机数          Random random=new Random();          n=random.nextInt(100);          System.out.println(name1+"给出的数字为:"+n);      }      //猜数字(静态方法,可通过类名调用)      public static String guessnum(int m) {          if(m<n) {              return "猜小了";          }else if(m>n){              return "猜大了";          }else return "猜对了";      }  }  //猜数线程  class guess extends  Thread{      String name2;      //最大值和最小值      private int min=0,max=100,nownum;      //比较结果      String Result;      guess(String name){          name2=name;      }      //获取比较结果      public String getGuess() {          return Result;      }      public void run() {          while(true) {              try{                  Thread.sleep(2000);              }catch(InterruptedException e){                  e.printStackTrace();              }          Random ran=new Random();          //当前猜的数字(最大值和最小值之间的数)          nownum=min+ran.nextInt(max-min);          //调用给出整数的线程 的猜数字方法guessnum,          Result=number.guessnum(nownum);          if(Result.equals("猜小了")) {              min=nownum;              System.out.println("线程二猜的数字是:"+nownum+"---猜小了");          }else if(Result.equals("猜大了")) {              max=nownum;              System.out.println("线程二猜的数字是:"+nownum+"---猜大了");          }else {              System.out.println("线程二猜的数字是:"+nownum+"---猜对了,结果是"+nownum);              System.exit(0);          }                    }      }  }  


阅读全文
0 0