javafx把一个字符串存入本地文件的具体代码
时间: 2023-02-21 13:37:54 浏览: 109
JavaFX 可以使用 `FileWriter` 类将字符串写入本地文件。这是一个简单的例子:
```
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String str = "这是要写入本地文件的字符串。";
try {
FileWriter writer = new FileWriter("文件名.txt");
writer.write(str);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,首先创建了一个字符串 `str`,然后使用 `FileWriter` 将该字符串写入名为 "文件名.txt" 的本地文件中。注意,在使用 `FileWriter` 时需要处理可能发生的 `IOException`,因此需要在代码中使用 try-catch 块。
相关问题
用java + fxml 生成想要的十六进制S/N码并通过串口存入,在fxml显示
生成十六进制S/N码可以使用Java中的UUID(Universally Unique Identifier)类来实现。UUID是一个标准的32位长度的字符串,可以使用toString()方法将其转换为16进制表示。在Java中操作串口可以使用Java Comm API,可以在Java SE Development Kit中找到该API。
下面是一个生成S/N码并通过串口存入并在Fxml显示的例子:
```java
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.UUID;
public class Controller {
@FXML
private TextField snTextField;
@FXML
private Label statusLabel;
private SerialPort serialPort;
public void generateSN() {
UUID uuid = UUID.randomUUID();
String sn = uuid.toString().replace("-", "");
snTextField.setText(sn);
}
public void saveSN() {
String sn = snTextField.getText();
if (serialPort != null) {
try {
OutputStream outputStream = serialPort.getOutputStream();
outputStream.write(sn.getBytes());
statusLabel.setText("S/N码已存入串口");
} catch (IOException e) {
e.printStackTrace();
statusLabel.setText("串口写入失败");
}
} else {
statusLabel.setText("串口未连接");
}
}
public void connectSerialPort() {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
CommPortIdentifier portIdentifier = (CommPortIdentifier) portList.nextElement();
if (portIdentifier.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portIdentifier.getName().equals("COM1")) {
try {
serialPort = (SerialPort) portIdentifier.open("SerialPort", 2000);
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
statusLabel.setText("串口已连接");
} catch (Exception e) {
e.printStackTrace();
statusLabel.setText("串口连接失败");
}
}
}
}
}
public void disconnectSerialPort() {
if (serialPort != null) {
serialPort.close();
serialPort = null;
statusLabel.setText("串口已断开");
}
}
}
```
在FXML文件中,使用Button、TextField和Label分别绑定对应的方法即可实现功能。需要注意的是,在连接串口时需要将串口名称(COM1)修改为实际的串口名称。
用Java编写GUI界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元,精确到小数点后两位。
好的,这是一个比较具体的编程问题。我可以提供一些思路和代码示例,帮助你完成这个任务。
首先,我们需要一个 GUI 界面来输入红包大小和抢红包人姓名。Java 提供了多种 GUI 库,比较常用的是 Swing 和 JavaFX。这里我使用 Swing 来实现。
下面是一个简单的 Swing 界面示例,包含一个标签、两个文本框和一个按钮:
```java
import javax.swing.*;
public class RedPacketGUI extends JFrame {
private JLabel label = new JLabel("请输入红包大小和抢红包人姓名(用逗号隔开):");
private JTextField amountField = new JTextField(10);
private JTextField nameField = new JTextField(10);
private JButton button = new JButton("确定");
public RedPacketGUI() {
super("抢红包游戏");
setSize(400, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.add(label);
panel.add(amountField);
panel.add(nameField);
panel.add(button);
add(panel);
setVisible(true);
}
public static void main(String[] args) {
new RedPacketGUI();
}
}
```
接下来,我们需要在按钮点击事件中获取文本框中输入的红包大小和抢红包人姓名,然后计算每个人抢到的红包大小。这里我们可以使用 Java 的随机数生成器来模拟抢红包的过程。
下面是完整的代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class RedPacketGUI extends JFrame {
private JLabel label = new JLabel("请输入红包大小和抢红包人姓名(用逗号隔开):");
private JTextField amountField = new JTextField(10);
private JTextField nameField = new JTextField(10);
private JButton button = new JButton("确定");
public RedPacketGUI() {
super("抢红包游戏");
setSize(400, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.add(label);
panel.add(amountField);
panel.add(nameField);
panel.add(button);
add(panel);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = amountField.getText() + "," + nameField.getText();
String[] parts = input.split(",");
double amount = Double.parseDouble(parts[0]);
String[] names = parts[1].split("\\s*,\\s*");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format.format(new Date());
double[] amounts = allocateRedPacket(amount, names.length);
String result = "系统当前时间:" + time + "\n";
for (int i = 0; i < names.length; i++) {
result += names[i] + " 抢到红包:" + String.format("%.2f", amounts[i]) + " 元\n";
}
JOptionPane.showMessageDialog(null, result);
}
});
setVisible(true);
}
private double[] allocateRedPacket(double amount, int count) {
double[] amounts = new double[count];
Random random = new Random();
for (int i = 0; i < count; i++) {
if (i == count - 1) {
amounts[i] = amount;
} else {
double max = amount - (count - i - 1) * 0.01;
double value = random.nextDouble() * max;
amounts[i] = Math.floor(value * 100) / 100.0;
amount -= amounts[i];
}
}
return amounts;
}
public static void main(String[] args) {
new RedPacketGUI();
}
}
```
在上面的代码中,我们定义了一个 `allocateRedPacket` 方法,用来计算每个人抢到的红包大小。该方法接受两个参数:红包总金额和抢红包人数。方法实现的思路如下:
1. 定义一个长度为人数的数组,用来存储每个人抢到的红包金额。
2. 随机生成一个小数,范围为 0 到剩余金额减去剩余人数乘以 0.01(每个人抢到的最小金额)。
3. 将生成的金额四舍五入到小数点后两位。
4. 将生成的金额存入数组中,然后将红包总金额减去该金额。
5. 重复步骤 2 到步骤 4,直到分配完所有红包。
最后,我们使用 `JOptionPane.showMessageDialog` 方法来弹出一个对话框,显示每个人抢到的红包大小。对话框中的文本使用字符串拼接的方式生成,每个人抢到的金额使用 `String.format` 方法格式化为保留两位小数的字符串。
阅读全文