二、实验项目内容(实验题目) 1、编写一个java程序,在主线程中再创建两个线程, 一个线程负责给出键盘上字母键上的字母(a-z之间),每个字母间隔3秒钟。 另一个线程负责让用户在控制台输入所给出的字母,如果输入正确,分数加1;如果输入错误,不加分。当输入‘#’时,退出程序。 思路分析: 两个线程需要交互,使用线程join()方法用于等待当前线程结束 | |
三、源程序(实验步骤/实验过程/算法) 第一步创建包 第二步一个线程负责给出键盘上字母键上的字母(a-z之间),每个字母间隔3秒钟。 package text21; import java.util.Random; public class Producer implements Runnable { public static char C ='a';
@Override public void run() { // TODO Auto-generated method stub Random random =new Random(); while(Keyboarfgame.running){
C=(char)(random.nextInt(26)+'a'); System.out.println("显示的字符:"+C); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }
} 第三步另一个线程负责让用户在控制台输入所给出的字母,如果输入正确,分数加1;如果输入错误,不加分。当输入‘#’时,退出程序。 package text21; import java.util.Scanner; public class Consumer implements Runnable { Scanner scanner = new Scanner(System.in); @Override public void run() { while(Keyboarfgame.running){ char c=scanner.next().charAt(0);
if(c == '#'){ Keyboarfgame.running= false; //System.out.println("程序运行结束!您的最终分数为:"+Keyboarfgame+"分"); break; } if(c== Producer.C){ Keyboarfgame.score++; System.out.println("输入正确,目前分数为"+Keyboarfgame.score+"分"); } else { System.out.println("输入错误"); }
} } } 完整的代码 Consumer package text21; import java.util.Scanner; public class Consumer implements Runnable { Scanner scanner = new Scanner(System.in); @Override public void run() { while(Keyboarfgame.running){ char c=scanner.next().charAt(0);
if(c == '#'){ Keyboarfgame.running= false; //System.out.println("程序运行结束!您的最终分数为:"+Keyboarfgame+"分"); break; } if(c== Producer.C){ Keyboarfgame.score++; System.out.println("输入正确,目前分数为"+Keyboarfgame.score+"分"); } else { System.out.println("输入错误"); }
} } } Producer package text21; import java.util.Random; public class Producer implements Runnable { public static char C ='a';
@Override public void run() { // TODO Auto-generated method stub Random random =new Random(); while(Keyboarfgame.running){
C=(char)(random.nextInt(26)+'a'); System.out.println("显示的字符:"+C); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }
} Keyboarfgame package text21; import java.util.Random; public class Keyboarfgame { public static int score = 0; public static boolean running = true;
public static void main(String[] args) { // TODO Auto-generated method stub Thread producer = new Thread(new Producer()); Thread consumer = new Thread(new Consumer());
producer.start(); consumer.start();
try { producer.join(); consumer.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("game over,最后得分:" + score); } } (空间不够,可加附页) |
四、源程序调试过程和(或)实验分析 (空间不够,可加附页) |