线程--猜数字

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

(1)代码实现

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);
		}
		
		}
	}
}
(2)运行结果

线程一给出的数字为:79
线程二猜的数字是:42---猜小了
线程二猜的数字是:50---猜小了
线程二猜的数字是:93---猜大了
线程二猜的数字是:54---猜小了
线程二猜的数字是:81---猜大了
线程二猜的数字是:80---猜大了
线程二猜的数字是:60---猜小了
线程二猜的数字是:65---猜小了
线程二猜的数字是:79---猜对了,结果是79



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值