用两个线程玩猜数字游戏,第一个线程负责随机给出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);
}
}
}
}
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);
}
}
}
}
相关文章推荐
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对
- lesson 10:用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对了”。猜数之前,要
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。要求每当第二个线程给出自己的猜测后,第一个线程都会提示“猜小了”、“猜大了”或“猜对
- JAVA--第十周作业编写之一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出
- 用java语言编写一个可以求20个范围在1-100之间随机整数和的程序。
- 输入一个整数,如果该整数大于1000,则输出“big”,如果该整数介于100到1000之间(包含两个边界),则输出“middle”,如果上面两种情况都不满足,输出”small“
- java.系统自动生成一个1-100之间的整数,请猜出这个数
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
- 输入一个整数,如果该整数大于1000,则输出“big”,如果该整数介于100到1000之间(包含两个边界),则输出“middle”,如果上面两种情况都不满足,输出”small“
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
- 定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个 0~100之间的随机整数,将它们存储到一维数组中,
- java--随机输出需要某两个整数之间的一个随机数
- 给出101个整数数,这101个数是1~100中的数,其中只有一个是出现两次的数,要求找出这个数。
- 4.输入一个整数,如果该整数大于1000,则输出“big”,如果该整数介于100到1000之间(包含两个边界),则输出“middle”,如果上面两种情况都不满足,输出”small“
- 查找程序中的错误(平凡的程序,不平凡的问题) 4.不定义第三个变量,互换两个变量的值 5.char 类型转换 6.输出 10~100 之间的随机整数
- 设计程序,单击【随机数】按钮,使用Math对象的random函数产生一个0-100之间(含0-100)的随机整数,并在对话框中显示,如下图。单击【计算】按钮,计算该随机数的平方、平方根和自然对数,保留两位小数,并在对话框中显示,如下图。