您的位置:首页 > 其它

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

2017-12-17 14:03 656 查看
用两个线程玩猜数字游戏,第一个线程负责随机给出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);
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐