进制转换(修改zjh)

master
xiexiaohang 1 year ago committed by 朱佳辉
parent 80f1e0531d
commit e7785e58df

@ -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);
}
}

@ -0,0 +1,103 @@
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("进制转换器");
// 创建布局
GridPane grid = new GridPane();
grid.setPadding(new Insets(10));
grid.setVgap(8);
grid.setHgap(10);
// 原始进制输入
Label originalBaseLabel = new Label("原始进制 (2-16):");
grid.add(originalBaseLabel, 0, 0);
TextField originalBaseInput = new TextField();
grid.add(originalBaseInput, 1, 0);
// 要转换的数输入
Label numberLabel = new Label("要转换的数:");
grid.add(numberLabel, 0, 1);
TextField numberInput = new TextField();
grid.add(numberInput, 1, 1);
// 目标进制输入
Label targetBaseLabel = new Label("目标进制 (2-16):");
grid.add(targetBaseLabel, 0, 2);
TextField targetBaseInput = new TextField();
grid.add(targetBaseInput, 1, 2);
// 转换结果显示
Label resultLabel = new Label("转换结果:");
grid.add(resultLabel, 0, 3);
TextField resultOutput = new TextField();
resultOutput.setEditable(false);
grid.add(resultOutput, 1, 3);
// 转换按钮
Button convertButton = new Button("转换");
grid.add(convertButton, 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) {
showAlert("错误", "进制应在2到16之间。");
return;
}
// 进行转换
int decimalNumber = convertToDecimal(number, originalBase);
String result = convertFromDecimal(decimalNumber, targetBase);
resultOutput.setText(result);
} catch (NumberFormatException ex) {
showAlert("错误", "请输入有效的数字和进制。");
} catch (IllegalArgumentException ex) {
showAlert("错误", "输入的数不符合原始进制。");
}
});
// 创建场景并显示
Scene scene = new Scene(grid, 400, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
// 弹出提示框
private void showAlert(String title, String message) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle(title);
alert.setHeaderText(null);
alert.setContentText(message);
alert.showAndWait();
}
public static void main(String[] args) {
launch(args);
}
}
Loading…
Cancel
Save