diff --git a/system.java b/system.java index 1fdfadd..bfeeeb0 100644 --- a/system.java +++ b/system.java @@ -1,110 +1,111 @@ - package java6201.lesson03; - - import javafx.application.Application; - import javafx.geometry.Insets; - import javafx.geometry.Pos; - import javafx.scene.Scene; - import javafx.scene.control.Alert; - import javafx.scene.control.Alert.AlertType; - import javafx.scene.control.Button; - import javafx.scene.control.Label; - import javafx.scene.control.TextField; - import javafx.scene.layout.GridPane; - import javafx.stage.Stage; - - public class system extends Application { - - private TextField inputTextField; - private TextField sourceBaseTextField; - private TextField targetBaseTextField; - private Label resultLabel; - - @Override - public void start(Stage primaryStage) { - primaryStage.setTitle("Base Converter");// - - GridPane grid = new GridPane(); - grid.setAlignment(Pos.CENTER); - grid.setPadding(new Insets(10)); - grid.setVgap(8);// - grid.setHgap(10); - - Label inputLabel = new Label("输入数字:");// - inputTextField = new TextField(); - - Label sourceBaseLabel = new Label("当前进制 (2-16):"); - sourceBaseTextField = new TextField(); - sourceBaseTextField.setText("10"); // Default to decimal - - Label targetBaseLabel = new Label("目标进制 (2-16):"); - targetBaseTextField = new TextField(); - targetBaseTextField.setText("2"); // Default to binary - - Button convertButton = new Button("确认"); - resultLabel = new Label(); - - grid.add(inputLabel, 0, 0); - grid.add(inputTextField, 1, 0); - grid.add(sourceBaseLabel, 0, 1); - grid.add(sourceBaseTextField, 1, 1); - grid.add(targetBaseLabel, 0, 2); - grid.add(targetBaseTextField, 1, 2); - grid.add(convertButton, 1, 3); - grid.add(resultLabel, 1, 4); - - convertButton.setOnAction(event -> convert()); - - Scene scene = new Scene(grid, 300, 200); - primaryStage.setScene(scene); - primaryStage.show(); - } - - private void convert() { - String input = inputTextField.getText(); - String sourceBaseStr = sourceBaseTextField.getText(); - String targetBaseStr = targetBaseTextField.getText(); - - try { - int sourceBase = Integer.parseInt(sourceBaseStr); - int targetBase = Integer.parseInt(targetBaseStr); - - if (sourceBase < 2 || sourceBase > 16 || targetBase < 2 || targetBase > 16) { - throw new IllegalArgumentException("Base must be between 2 and 16."); - } - - long number = Long.parseLong(input, sourceBase); - String result = convertToBase(number, targetBase); - - resultLabel.setText("Result: " + result); - } catch (NumberFormatException e) { - showAlert(AlertType.ERROR, "Invalid Input", "Number format error: " + e.getMessage()); - } catch (IllegalArgumentException e) { - showAlert(AlertType.ERROR, "Invalid Input", "Illegal argument: " + e.getMessage()); - } - } - - private String convertToBase(long number, int base) { - if (number == 0) { - return "0"; - } - StringBuilder result = new StringBuilder(); - char[] digits = "0123456789ABCDEF".toCharArray(); - while (number > 0) { - result.insert(0, digits[(int) (number % base)]); - number /= base; - } - return result.toString(); - } - - private void showAlert(AlertType alertType, String title, String content) { - Alert alert = new Alert(alertType); - alert.setTitle(title); - alert.setContentText(content); - alert.setHeaderText(null); - alert.showAndWait(); - } - - public static void main(String[] args) { - launch(args); - } - } +package java1292.lesson051292; + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene;import javafx.scene.control.Alert; + + import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.Alert; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; + +public class system extends Application { + + private TextField inputTextField; + private TextField sourceBaseTextField; + private TextField targetBaseTextField; + private Label resultLabel; + + @Override + public void start(Stage primaryStage) { + primaryStage.setTitle("Base Converter");// + + GridPane grid = new GridPane(); + grid.setAlignment(Pos.CENTER); + grid.setPadding(new Insets(10)); + grid.setVgap(8);// + grid.setHgap(10); + + Label inputLabel = new Label("输入数字:");// + inputTextField = new TextField(); + + Label sourceBaseLabel = new Label("当前进制 (2-16):"); + sourceBaseTextField = new TextField(); + sourceBaseTextField.setText("10"); // Default to decimal + + Label targetBaseLabel = new Label("目标进制 (2-16):"); + targetBaseTextField = new TextField(); + targetBaseTextField.setText("2"); // Default to binary + + Button convertButton = new Button("确认"); + resultLabel = new Label(); + + grid.add(inputLabel, 0, 0); + grid.add(inputTextField, 1, 0); + grid.add(sourceBaseLabel, 0, 1); + grid.add(sourceBaseTextField, 1, 1); + grid.add(targetBaseLabel, 0, 2); + grid.add(targetBaseTextField, 1, 2); + grid.add(convertButton, 1, 3); + grid.add(resultLabel, 1, 4); + + convertButton.setOnAction(event -> convert()); + + Scene scene = new Scene(grid, 300, 200); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private void convert() { + String input = inputTextField.getText(); + String sourceBaseStr = sourceBaseTextField.getText(); + String targetBaseStr = targetBaseTextField.getText(); + + try { + int sourceBase = Integer.parseInt(sourceBaseStr); + int targetBase = Integer.parseInt(targetBaseStr); + + if (sourceBase < 2 || sourceBase > 16 || targetBase < 2 || targetBase > 16) { + throw new IllegalArgumentException("Base must be between 2 and 16."); + } + + long number = Long.parseLong(input, sourceBase); + String result = convertToBase(number, targetBase); + + resultLabel.setText("Result: " + result); + } catch (NumberFormatException e) { + showAlert(AlertType.ERROR, "Invalid Input", "Number format error: " + e.getMessage()); + } catch (IllegalArgumentException e) { + showAlert(AlertType.ERROR, "Invalid Input", "Illegal argument: " + e.getMessage()); + } + } + + private String convertToBase(long number, int base) { + if (number == 0) { + return "0"; + } + StringBuilder result = new StringBuilder(); + char[] digits = "0123456789ABCDEF".toCharArray(); + while (number > 0) { + result.insert(0, digits[(int) (number % base)]); + number /= base; + } + return result.toString(); + } + + private void showAlert(AlertType alertType, String title, String content) { + Alert alert = new Alert(alertType); + alert.setTitle(title); + alert.setContentText(content); + alert.setHeaderText(null); + alert.showAndWait(); + } + + public static void main(String[] args) { + launch(args); + } +}