JAVA上机实践之输入输出流与多线程
文章目录
- TypeChinese.java
- Chinese.java
- GiveChineseThread.java
- InuptChineseThread.java
- 运行结果:
TypeChinese.java
public class TypeChinese {public static void main(String args[]) {System.out.println("输入汉字练习(输入#结束程序)");System.out.printf("输入显示的汉字(回车)\n");Chinese hanzi;hanzi = new Chinese();GiveChineseThread giveHanzi;InputChineseThread typeHanzi;giveHanzi = new GiveChineseThread(); //创建线程giveHanzigiveHanzi.setChinese(hanzi);giveHanzi.setSleepLength(6000);typeHanzi = new InputChineseThread(); //创建线程typeHanzitypeHanzi.setChinese(hanzi);giveHanzi.start();try {Thread.sleep(200);} catch (Exception exp) {}typeHanzi.start();}
}
Chinese.java
public class Chinese {char c = '\0';public void setChinese(char c) {this.c = c;}public char getChinese() {return c;}
}
GiveChineseThread.java
public class GiveChineseThread extends Thread {Chinese hanzi;char startChar = (char) 22909, endChar = (char) (startChar + 100);int sleepLength = 5000;public void setChinese(Chinese hanzi) {this.hanzi = hanzi;}public void setSleepLength(int n) {sleepLength = n;}public void run() {char c = startChar;while (true) {hanzi.setChinese(c);System.out.printf("显示的汉字:%c\n ", hanzi.getChinese());try {Thread.sleep(10000);//调用sleep方法使得线程中断sleepLength豪秒} catch (InterruptedException e) {}c = (char) (c + 1);if (c > endChar)c = startChar;}}
}
InuptChineseThread.java
import java.util.Scanner;public class InputChineseThread extends Thread {Scanner reader;Chinese hanzi;int score = 0;InputChineseThread() {reader = new Scanner(System.in); //输入}public void setChinese(Chinese hanzi) {this.hanzi = hanzi;}public void run() {while (true) {String str = reader.nextLine();char c = str.charAt(0);if (c == hanzi.getChinese()) {score++;System.out.printf("\t\t输入对了,目前分数%d\n", score);} else {System.out.printf("\t\t输入错了,目前分数%d\n", score);}if (c == '#')System.exit(0);}}
}