java从文件读取题目,实现在线问答GUI小程序
时间: 2023-06-19 20:08:48 浏览: 43
这是一个比较复杂的问题,需要涉及到Java文件读写、GUI编程、网络通信等多个方面的知识。下面是一个简单的实现思路:
1. 创建一个包含题目和答案的文本文件,每行一个题目和答案,用特殊字符分隔开,比如“#”。
2. 在Java程序中使用FileReader和BufferedReader读取文件内容,并将题目和答案存储到一个Map中。
3. 创建一个GUI界面,包含一个文本框用于输入问题,一个按钮用于提交问题,一个文本区域用于显示答案。
4. 在按钮的ActionListener中获取用户输入的问题,从Map中查找对应的答案,并将答案显示在文本区域中。
下面是一个简单的代码示例,仅供参考:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
public class OnlineQA extends JFrame implements ActionListener {
private Map<String, String> qaMap = new HashMap<>();
private JTextField inputField;
private JTextArea outputArea;
public OnlineQA() {
super("在线问答");
// 读取题库文件
try (BufferedReader reader = new BufferedReader(new FileReader("qa.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split("#");
qaMap.put(parts[0], parts[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
// 创建GUI界面
JPanel panel = new JPanel(new BorderLayout());
inputField = new JTextField();
JButton submitButton = new JButton("提交");
submitButton.addActionListener(this);
outputArea = new JTextArea();
outputArea.setEditable(false);
panel.add(inputField, BorderLayout.NORTH);
panel.add(submitButton, BorderLayout.EAST);
panel.add(outputArea, BorderLayout.CENTER);
setContentPane(panel);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// 处理用户输入的问题
String question = inputField.getText();
String answer = qaMap.get(question);
if (answer != null) {
outputArea.setText(answer);
} else {
outputArea.setText("对不起,我不知道答案。");
}
}
public static void main(String[] args) {
new OnlineQA();
}
}
```
需要注意的是,这个程序仅仅是一个简单的示例,实际应用中还需要考虑很多细节,比如输入的问题应该进行处理和过滤,避免恶意输入等问题。