Java实现获取输入的多行数据
时间: 2024-05-04 16:16:18 浏览: 11
可以使用Scanner类来实现获取多行数据,具体实现代码如下:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line;
StringBuilder sb = new StringBuilder();
while ((line = scanner.nextLine()) != null && !line.isEmpty()) {
sb.append(line).append("\n");
}
System.out.println(sb.toString());
}
}
```
该代码中使用Scanner的nextLine()方法来获取一行数据,并且使用StringBuilder类将多行数据拼接到一起,最终输出完整的输入内容。
相关问题
java gui 组件获取数据
在 Java GUI 中,如果你想要获取用户输入的数据,可以使用以下组件:
1. JTextField:用于获取单行文本输入。
例如:
```java
JFrame frame = new JFrame("Get User Input");
JPanel panel = new JPanel();
JTextField textField = new JTextField(20);
panel.add(textField);
frame.add(panel);
frame.pack();
frame.setVisible(true);
String userInput = textField.getText();
```
2. JTextArea:用于获取多行文本输入。
例如:
```java
JFrame frame = new JFrame("Get User Input");
JPanel panel = new JPanel();
JTextArea textArea = new JTextArea(5, 20);
panel.add(textArea);
frame.add(panel);
frame.pack();
frame.setVisible(true);
String userInput = textArea.getText();
```
3. JComboBox:用于获取下拉列表选择的数据。
例如:
```java
JFrame frame = new JFrame("Get User Input");
JPanel panel = new JPanel();
String[] options = {"Option 1", "Option 2", "Option 3"};
JComboBox<String> comboBox = new JComboBox<>(options);
panel.add(comboBox);
frame.add(panel);
frame.pack();
frame.setVisible(true);
String selectedOption = (String) comboBox.getSelectedItem();
```
4. JCheckBox:用于获取复选框的选择状态。
例如:
```java
JFrame frame = new JFrame("Get User Input");
JPanel panel = new JPanel();
JCheckBox checkBox = new JCheckBox("Check me!");
panel.add(checkBox);
frame.add(panel);
frame.pack();
frame.setVisible(true);
boolean isChecked = checkBox.isSelected();
```
以上是一些常见的组件,如果需要获取其他类型的数据,可以查看相应的组件文档或者使用更高级的库。
java编写一个查询类,类名为StudentSearch 要求:输入学生姓名,单击“查询”按钮,若学生姓名在数据文件(data.txt)中存在,则在多行文本框中显示查询到的学生成绩信息;若姓名在数据文件中不存在,显示查无此人,单击关闭按钮结束程序
以下是一个基本的示例代码,实现了输入学生姓名,查询数据文件中是否存在该学生,并在多行文本框中显示查询到的学生成绩信息。如果姓名不存在,则会弹出提示窗口显示“查无此人”,并结束程序。
```java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class StudentSearch extends Frame implements ActionListener {
private TextField nameField = new TextField(20);
private TextArea resultArea = new TextArea(10, 30);
private Button searchButton = new Button("查询");
private Button closeButton = new Button("关闭");
public StudentSearch() {
super("学生查询");
setLayout(new FlowLayout());
add(new Label("请输入学生姓名:"));
add(nameField);
add(searchButton);
add(closeButton);
add(resultArea);
searchButton.addActionListener(this);
closeButton.addActionListener(this);
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String name = nameField.getText().trim();
if (name.equals("")) {
return;
}
try {
BufferedReader br = new BufferedReader(new FileReader("data.txt"));
String line;
boolean found = false;
while ((line = br.readLine()) != null) {
String[] parts = line.split(",");
if (parts[0].equals(name)) {
resultArea.append(line + "\n");
found = true;
break;
}
}
if (!found) {
JOptionPane.showMessageDialog(this, "查无此人");
}
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == closeButton) {
System.exit(0);
}
}
public static void main(String[] args) {
StudentSearch search = new StudentSearch();
search.setVisible(true);
}
}
```
在这个示例代码中,我们创建了一个名为 `StudentSearch` 的类,继承自 `Frame` 类,并实现了 `ActionListener` 接口以处理按钮的点击事件。在类的构造函数中,我们创建了一个文本输入框和两个按钮,用于输入学生姓名、查询和关闭程序。我们还创建了一个多行文本框,用于显示查询到的学生成绩信息。
在 `actionPerformed` 方法中,我们首先判断点击的按钮是查询按钮还是关闭按钮。如果是查询按钮,我们从文本输入框中获取学生姓名,并尝试打开数据文件(data.txt)进行查询。我们使用 `BufferedReader` 类逐行读取数据文件,然后使用 `split` 方法将每一行数据分割成一个字符串数组。如果当前行数据的第一个元素(也就是学生姓名)与查询的姓名相同,则将该行数据添加到多行文本框中,并将 `found` 标志设为 true。最后,如果查询不到该学生,则弹出一个提示窗口。
如果点击的是关闭按钮,则直接退出程序。在 `main` 方法中,我们创建了一个 `StudentSearch` 对象,并将其设置为可见。