编写一个Java应用程序,在主线程中再创建两个线程,一个线程负责给出键盘上字母键上的字母,另一个线程负责用户在命令行中输入所给出的字母。
时间: 2024-02-03 18:16:00 浏览: 31
以下是一个可能的Java应用程序,其中包括一个主线程和两个子线程,一个用于读取键盘上的字母,另一个用于读取命令行输入。
```java
import java.util.Scanner;
public class KeyboardInputThread extends Thread {
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
System.out.println("You typed: " + input);
}
}
public class CommandLineInputThread extends Thread {
private String letter;
public CommandLineInputThread(String letter) {
this.letter = letter;
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
if (input.equals(letter)) {
System.out.println("Correct!");
} else {
System.out.println("Incorrect!");
}
}
}
public class MainThread {
public static void main(String[] args) {
KeyboardInputThread keyboardInputThread = new KeyboardInputThread();
CommandLineInputThread commandLineInputThread = new CommandLineInputThread("a");
keyboardInputThread.start();
commandLineInputThread.start();
}
}
```
在这个例子中,`KeyboardInputThread`类继承了`Thread`类,并覆盖了其`run()`方法。在`run()`方法中,它使用`Scanner`类从键盘中读取用户输入,并将其输出到控制台。
`CommandLineInputThread`类也继承了`Thread`类,并使用了一个构造函数来传递要匹配的字母。在`run()`方法中,它读取命令行输入并检查它是否与传递的字母匹配,并将结果输出到控制台。
在`MainThread`类中,我们创建了一个`KeyboardInputThread`实例和一个`CommandLineInputThread`实例,并分别启动它们的线程。这将导致两个子线程同时运行,并在后台读取用户输入。当用户在键盘上输入字母时,`KeyboardInputThread`子线程将会输出它,而当用户在命令行中输入字母时,`CommandLineInputThread`子线程将会检查它是否与预期的字母匹配,并输出相应的结果。