You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.5 KiB

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class text1 extends Application {
private String toBase6String(int number) {
if (number == 0) {
return "0";
}
StringBuilder sb = new StringBuilder();
char[] digits = {'0', '1', '2', '3', '4', '5'};
boolean isNegative = number < 0;
if (isNegative) {
number = -number;
}
while (number > 0) {
sb.insert(0, digits[number % 6]);
number /= 6;
}
if (isNegative) {
sb.insert(0, '-');
}
return sb.toString();
}
@Override
public void start(Stage primaryStage) {
// 创建文本输入框
TextField inputField = new TextField();
inputField.setPromptText("输入一个十进制数");
VBox vBox = new VBox(10);
// 创建标签显示结果
Label binaryLabel = new Label();
Label octalLabel = new Label();
Label hexLabel = new Label();
//
// 创建按钮
Button convertButton = new Button("转换");
convertButton.setOnAction(e -> {
try {
int number = Integer.parseInt(inputField.getText());
binaryLabel.setText(String.format("二进制: %s", Integer.toBinaryString(number).toUpperCase()));
octalLabel.setText(String.format("八进制: %s", Integer.toOctalString(number)));
hexLabel.setText(String.format("十六进制: %s", Integer.toHexString(number).toUpperCase()));
Label base6Label = new Label();
base6Label.setText(String.format("六进制: %s", toBase6String(number)));
vBox.getChildren().add(base6Label);
} catch (NumberFormatException ex) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("输入错误");
alert.setHeaderText("无效输入");
alert.setContentText("请输入一个有效的十进制数。");
alert.showAndWait();
}
});
// 创建布局
vBox.getChildren().addAll(inputField, convertButton, binaryLabel, octalLabel, hexLabel);
// 设置场景
Scene scene = new Scene(vBox, 300, 200);
primaryStage.setTitle("进制转换器");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}