diff --git a/BaseConversion.java b/BaseConversion.java deleted file mode 100644 index 49894d2..0000000 --- a/BaseConversion.java +++ /dev/null @@ -1,58 +0,0 @@ -import java.util.Scanner; - -public class BaseConversion { - - // 将任意R进制数转换为十进制数 - public static int convertToDecimal(String numStr, int base) { - return Integer.parseInt(numStr, base); - } - - // 将十进制数转换为任意R进制数 - public static String convertFromDecimal(int num, int base) { - if (num == 0) { - return "0"; - } - StringBuilder result = new StringBuilder(); - while (num > 0) { - int remainder = num % base; - if (remainder < 10) { - result.append(remainder); - } else { - result.append((char) ('A' + (remainder - 10))); // A-F 对应 10-15 - } - num /= base; - } - return result.reverse().toString(); // 反转结果 - } - - // 将一个R进制数转换为另一个R进制数 - public static String convertBase(String numStr, int fromBase, int toBase) { - int decimalNumber = convertToDecimal(numStr, fromBase); - return convertFromDecimal(decimalNumber, toBase); - } - - public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - System.out.print("请输入要转换的数字: "); - String numStr = scanner.nextLine(); - - System.out.print("请输入源进制 (2-16): "); - int fromBase = scanner.nextInt(); - - System.out.print("请输入目标进制 (2-16): "); - int toBase = scanner.nextInt(); - - // 验证进制范围 - if (fromBase < 2 || fromBase > 16 || toBase < 2 || toBase > 16) { - System.out.println("进制必须在 2 到 16 之间。"); - } else { - String result = convertBase(numStr, fromBase, toBase); - System.out.println(numStr + " 从 " + fromBase + " 进制转换到 " + toBase + " 进制的结果是: " + result); - } - - scanner.close(); - - //This is a test - } -} diff --git a/BaseConversionGUI.java b/BaseConversionGUI.java new file mode 100644 index 0000000..baf9c69 --- /dev/null +++ b/BaseConversionGUI.java @@ -0,0 +1,93 @@ +import java.util.Scanner; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class BaseConversionGUI extends JFrame implements ActionListener { + + private JTextField inputField; + private JTextField fromBaseField; + private JTextField toBaseField; + private JLabel resultLabel; + + public BaseConversionGUI() { + setTitle("进制转换器"); + setSize(400, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); // 居中显示窗口 + + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(4, 2)); + + panel.add(new JLabel("请输入要转换的数字: ")); + inputField = new JTextField(); + panel.add(inputField); + + panel.add(new JLabel("请输入源进制 (2-16): ")); + fromBaseField = new JTextField(); + panel.add(fromBaseField); + + panel.add(new JLabel("请输入目标进制 (2-16): ")); + toBaseField = new JTextField(); + panel.add(toBaseField); + + JButton convertButton = new JButton("转换"); + convertButton.addActionListener(this); + panel.add(convertButton); + + resultLabel = new JLabel(); + panel.add(resultLabel); + + add(panel); + } + + @Override + public void actionPerformed(ActionEvent e) { + String numStr = inputField.getText(); + int fromBase = Integer.parseInt(fromBaseField.getText()); + int toBase = Integer.parseInt(toBaseField.getText()); + + if (fromBase < 2 || fromBase > 16 || toBase < 2 || toBase > 16) { + JOptionPane.showMessageDialog(this, "进制必须在 2 到 16 之间。", "错误", JOptionPane.ERROR_MESSAGE); + } else { + String result = convertBase(numStr, fromBase, toBase); + resultLabel.setText(numStr + " 从 " + fromBase + " 进制转换到 " + toBase + " 进制的结果是: " + result); + } + } + + public static void main(String[] args) { + EventQueue.invokeLater(() -> { + BaseConversionGUI gui = new BaseConversionGUI(); + gui.setVisible(true); + }); + } + + // 原有的转换方法保持不变 + public static String convertBase(String numStr, int fromBase, int toBase) { + int decimalNumber = convertToDecimal(numStr, fromBase); + return convertFromDecimal(decimalNumber, toBase); + } + + public static int convertToDecimal(String numStr, int base) { + return Integer.parseInt(numStr, base); + } + + public static String convertFromDecimal(int num, int base) { + if (num == 0) { + return "0"; + } + StringBuilder result = new StringBuilder(); + while (num > 0) { + int remainder = num % base; + if (remainder < 10) { + result.append(remainder); + } else { + result.append((char) ('A' + (remainder - 10))); + } + num /= base; + } + return result.reverse().toString(); + } +} diff --git a/out/production/jzq/BaseConversion.class b/out/production/jzq/BaseConversion.class deleted file mode 100644 index db7ab2e..0000000 Binary files a/out/production/jzq/BaseConversion.class and /dev/null differ