用Java代码实现,并注释每行代码的意思
时间: 2024-03-14 10:44:26 浏览: 48
好的,以下是用Java代码实现将十进制数转换为任意进制数的程序,并注释了每行代码的意思:
```java
import java.util.Scanner;
import java.util.Stack;
public class DecimalConverter {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a decimal number: ");
int decimal = sc.nextInt();
System.out.print("Enter the target base (2, 8, 16): ");
int base = sc.nextInt();
String converted = decimalToBase(decimal, base);
System.out.printf("%d in decimal is %s in base %d\n", decimal, converted, base);
}
/**
* 将十进制数转换为任意进制数
*
* @param decimal 十进制数
* @param base 目标进制数
* @return 转换后的数
*/
public static String decimalToBase(int decimal, int base) {
Stack<Integer> stack = new Stack<>();
while (decimal > 0) {
int remainder = decimal % base;
stack.push(remainder);
decimal /= base;
}
StringBuilder converted = new StringBuilder();
while (!stack.isEmpty()) {
int digit = stack.pop();
if (digit < 10) {
converted.append(digit);
} else {
converted.append((char) ('A' + digit - 10));
}
}
return converted.toString();
}
}
```
该程序使用了 `java.util.Stack` 类来实现栈的功能。首先,从键盘输入一个十进制数和目标进制数,并调用 `decimalToBase` 方法进行转换。该方法使用了一个栈来存放余数,通过不断对十进制数取模并除以目标进制数的方式来得到每一位的余数,并将余数压入栈中。最后,从栈中弹出余数,将余数转换为对应的数字或字母,并拼接成最终的转换结果。如果余数小于10,直接将余数转换为数字;如果余数大于等于10,将余数转换为对应的字母(A~F)。
注意,在转换为十六进制数时,需要将余数转换为字母,因此需要使用 `(char) ('A' + digit - 10)` 的方式将余数转换为字母。其中,`(char) ('A' + digit - 10)` 表示将数字转换为对应的 ASCII 码,并将其转换为字符类型。
阅读全文