From 2a11aa92f88da2c549782fd84e5a2f0e076b8409 Mon Sep 17 00:00:00 2001 From: xiexiaohang <1815965264@qq.com> Date: Thu, 10 Oct 2024 16:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=88=B6=E8=BD=AC=E6=8D=A2=EF=BC=88?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=95=8C=E9=9D=A2xxh=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1010Lession/src/jzzh/BaseConverter.java | 41 --------- 1010Lession/src/jzzh/BaseConverterApp.java | 97 ++++++++++++++++++++++ 2 files changed, 97 insertions(+), 41 deletions(-) delete mode 100644 1010Lession/src/jzzh/BaseConverter.java create mode 100644 1010Lession/src/jzzh/BaseConverterApp.java diff --git a/1010Lession/src/jzzh/BaseConverter.java b/1010Lession/src/jzzh/BaseConverter.java deleted file mode 100644 index b207961..0000000 --- a/1010Lession/src/jzzh/BaseConverter.java +++ /dev/null @@ -1,41 +0,0 @@ -package jzzh; - -import java.util.Scanner; - -public class BaseConverter { - // 将任意 R 进制的数转换为十进制 - public static int convertToDecimal(String number, int base) { - return Integer.parseInt(number, base); - } - - // 将十进制数转换为任意目标进制 - public static String convertFromDecimal(int decimalNumber, int targetBase) { - return Integer.toString(decimalNumber, targetBase).toUpperCase(); // 使用大写表示结果 - } - - public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - // 输入原始进制 - System.out.print("请输入原始进制 (2 ≤ R ≤ 16): "); - int originalBase = scanner.nextInt(); - - // 输入需要转换的数 - System.out.print("请输入进制数: "); - String number = scanner.next().toUpperCase(); // 防止字母大小写混淆 - - // 输入目标进制 - System.out.print("请输入目标进制 (2 ≤ R ≤ 16): "); - int targetBase = scanner.nextInt(); - - // 将原始 R 进制数转换为十进制 - int decimalNumber = convertToDecimal(number, originalBase); - - // 将十进制数转换为目标 R' 进制 - String result = convertFromDecimal(decimalNumber, targetBase); - - // 输出结果 - System.out.println("转换后的结果: " + result); - } -} - diff --git a/1010Lession/src/jzzh/BaseConverterApp.java b/1010Lession/src/jzzh/BaseConverterApp.java new file mode 100644 index 0000000..15eca87 --- /dev/null +++ b/1010Lession/src/jzzh/BaseConverterApp.java @@ -0,0 +1,97 @@ +package jzzh; + + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.*; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; + +public class BaseConverterApp extends Application { + + // 将任意 R 进制的数转换为十进制 + public static int convertToDecimal(String number, int base) { + return Integer.parseInt(number, base); + } + + // 将十进制数转换为任意目标进制 + public static String convertFromDecimal(int decimalNumber, int targetBase) { + return Integer.toString(decimalNumber, targetBase).toUpperCase(); + } + + @Override + public void start(Stage primaryStage) { + primaryStage.setTitle("Base Converter"); + + // 创建布局 + GridPane grid = new GridPane(); + grid.setPadding(new Insets(10, 10, 10, 10)); + grid.setVgap(8); + grid.setHgap(10); + + // 原始进制标签和输入框 + Label originalBaseLabel = new Label("原始进制 (2-16):"); + GridPane.setConstraints(originalBaseLabel, 0, 0); + TextField originalBaseInput = new TextField(); + GridPane.setConstraints(originalBaseInput, 1, 0); + + // 要转换的数字标签和输入框 + Label numberLabel = new Label("请输入进制数:"); + GridPane.setConstraints(numberLabel, 0, 1); + TextField numberInput = new TextField(); + GridPane.setConstraints(numberInput, 1, 1); + + // 目标进制标签和输入框 + Label targetBaseLabel = new Label("目标进制 (2-16):"); + GridPane.setConstraints(targetBaseLabel, 0, 2); + TextField targetBaseInput = new TextField(); + GridPane.setConstraints(targetBaseInput, 1, 2); + + // 转换按钮 + Button convertButton = new Button("转换"); + GridPane.setConstraints(convertButton, 1, 3); + + // 结果标签 + Label resultLabel = new Label(); + GridPane.setConstraints(resultLabel, 1, 4); + + // 设置按钮事件处理 + convertButton.setOnAction(e -> { + try { + // 获取用户输入 + int originalBase = Integer.parseInt(originalBaseInput.getText()); + String number = numberInput.getText().toUpperCase(); + int targetBase = Integer.parseInt(targetBaseInput.getText()); + + // 检查输入的进制范围是否合法 + if (originalBase < 2 || originalBase > 16 || targetBase < 2 || targetBase > 16) { + resultLabel.setText("进制范围必须在2到16之间!"); + } else { + // 执行进制转换 + int decimalNumber = convertToDecimal(number, originalBase); + String result = convertFromDecimal(decimalNumber, targetBase); + resultLabel.setText("转换后的结果: " + result); + } + } catch (NumberFormatException ex) { + resultLabel.setText("输入格式错误,请检查!"); + } catch (Exception ex) { + resultLabel.setText("转换失败: " + ex.getMessage()); + } + }); + + // 将所有控件添加到布局中 + grid.getChildren().addAll(originalBaseLabel, originalBaseInput, numberLabel, numberInput, targetBaseLabel, targetBaseInput, convertButton, resultLabel); + + // 创建场景并显示 + Scene scene = new Scene(grid, 400, 250); + primaryStage.setScene(scene); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} + +