写JAVA,用栈进行数值转换,有多行案例,每行两个正整数N、d,分别表示十进制数N,和要转换的进制d,0 0表示结束
时间: 2024-10-11 21:10:54 浏览: 16
进制转换 把一个任意的十进制正整数 N 转换成 d 进制数。 N 是一个正整数,d 是一个大于 1 小于 10 的整数,二者均由用户输入,且两数字用换行分隔。
在Java中,你可以使用栈数据结构将一个十进制数转换成其他进制,如二进制、八进制或十六进制等。这里是一个简单的示例,展示如何实现这个功能:
```java
import java.util.Stack;
public class DecimalToBaseConverter {
private static String[] bases = {"", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
public static void main(String[] args) {
// 示例输入
int[][] cases = {
{10, 2}, {15, 16}, {123, 8}, {255, 2}, {0, 0} // 每一行包含一个十进制数N和要转换的进制d
};
for (int[] casePair : cases) {
int n = casePair[0], d = casePair[1];
if (n == 0 && d == 0) { // 结束标志
System.out.println("End of conversion");
} else {
convertDecimalToBase(n, d);
System.out.println(); // 输出结果后换行
}
}
}
// 转换方法,使用栈来存储每一位数字
private static void convertDecimalToBase(int number, int base) {
Stack<Character> stack = new Stack<>();
while (number > 0) {
stack.push(bases[number % base]);
number /= base;
}
StringBuilder result = new StringBuilder();
while (!stack.isEmpty()) {
result.append(stack.pop());
}
System.out.printf("Number %d in base %d is %s%n", number, base, result.toString());
}
}
```
在这个例子中,`convertDecimalToBase`函数负责实际的转换工作,它会循环处理输入的十进制数的每一位,并将其添加到对应的进制字符串中。当处理完所有位数后,再将栈中的字符拼接起来形成最终结果。
阅读全文