Compare commits
2 Commits
405a0aa0e0
...
163d34bba2
Author | SHA1 | Date |
---|---|---|
|
163d34bba2 | 4 months ago |
|
8f220df62d | 4 months ago |
@ -1,66 +0,0 @@
|
|||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class BaseConversion {
|
|
||||||
public static int convertToDecimal(String number, int base) {
|
|
||||||
int decimalValue = 0;
|
|
||||||
int power = 0;
|
|
||||||
|
|
||||||
for (int i = number.length() - 1; i >= 0; i--) {
|
|
||||||
char digit = number.charAt(i);
|
|
||||||
int digitValue;
|
|
||||||
|
|
||||||
if (Character.isDigit(digit)) {
|
|
||||||
digitValue = digit - '0';
|
|
||||||
} else {
|
|
||||||
digitValue = Character.toUpperCase(digit) - 'A' + 10; // A-F
|
|
||||||
}
|
|
||||||
|
|
||||||
decimalValue += digitValue * Math.pow(base, power);
|
|
||||||
power++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return decimalValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String convertFromDecimal(int number, int base) {
|
|
||||||
StringBuilder result = new StringBuilder();
|
|
||||||
|
|
||||||
if (number == 0) {
|
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
while (number > 0) {
|
|
||||||
int remainder = number % base;
|
|
||||||
if (remainder < 10) {
|
|
||||||
result.append((char) ('0' + remainder));
|
|
||||||
} else {
|
|
||||||
result.append((char) ('A' + remainder - 10));
|
|
||||||
}
|
|
||||||
number /= base;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result.reverse().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
Scanner scanner = new Scanner(System.in);
|
|
||||||
|
|
||||||
System.out.print("请输入源进制 (2-16): ");
|
|
||||||
int sourceBase = scanner.nextInt();
|
|
||||||
System.out.print("请输入目标进制 (2-16): ");
|
|
||||||
int targetBase = scanner.nextInt();
|
|
||||||
scanner.nextLine();
|
|
||||||
|
|
||||||
|
|
||||||
System.out.print("请输入要转换的数字: ");
|
|
||||||
String number = scanner.nextLine();
|
|
||||||
|
|
||||||
|
|
||||||
int decimalValue = convertToDecimal(number, sourceBase);
|
|
||||||
String result = convertFromDecimal(decimalValue, targetBase);
|
|
||||||
|
|
||||||
|
|
||||||
System.out.println("转换结果: " + result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,68 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class BaseConversion2 {
|
||||||
|
public static int convertToDecimal(String number, int base) {
|
||||||
|
int decimalValue = 0;
|
||||||
|
int power = 0;
|
||||||
|
|
||||||
|
for (int i = number.length() - 1; i >= 0; i--) {
|
||||||
|
char digit = number.charAt(i);
|
||||||
|
int digitValue;
|
||||||
|
|
||||||
|
if (Character.isDigit(digit)) {
|
||||||
|
digitValue = digit - '0';
|
||||||
|
} else {
|
||||||
|
digitValue = Character.toUpperCase(digit) - 'A' + 10; // A-F
|
||||||
|
}
|
||||||
|
|
||||||
|
decimalValue += digitValue * Math.pow(base, power);
|
||||||
|
power++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return decimalValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String convertFromDecimal(int number, int base) {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
if (number == 0) {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
while (number > 0) {
|
||||||
|
int remainder = number % base;
|
||||||
|
if (remainder < 10) {
|
||||||
|
result.append((char) ('0' + remainder));
|
||||||
|
} else {
|
||||||
|
result.append((char) ('A' + remainder - 10));
|
||||||
|
}
|
||||||
|
number /= base;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.reverse().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
JFrame frame = new JFrame("进制转换器");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setSize(400, 300);
|
||||||
|
frame.setLayout(new GridLayout(5, 2));
|
||||||
|
|
||||||
|
JLabel sourceBaseLabel = new JLabel("源进制 (2-16):");
|
||||||
|
JTextField sourceBaseField = new JTextField();
|
||||||
|
|
||||||
|
JLabel targetBaseLabel = new JLabel("目标进制 (2-16):");
|
||||||
|
JTextField targetBaseField = new JTextField();
|
||||||
|
|
||||||
|
JLabel numberLabel = new JLabel("要转换的数字:");
|
||||||
|
JTextField numberField = new JTextField();
|
||||||
|
|
||||||
|
JButton convertButton = new JButton("转换");
|
||||||
|
JLabel resultLabel = new JLabel("转换结果:");
|
||||||
|
|
||||||
|
convertButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerf
|
Loading…
Reference in new issue