给我完整Java代码不能使用list 和vector
时间: 2024-11-22 07:47:09 浏览: 3
Java 中的vector和list的区别和使用实例详解
如果你不允许使用`List`或`Vector`,你可以选择直接使用数组(Array)来实现基于栈的操作。由于数组在Java中是固定长度的,所以你需要预先确定进制的最大长度。以下是一个简单的例子,展示了如何用数组来实现从十进制到任意进制的转换,只使用了栈(数组作为栈底层实现):
```java
public class CustomStack {
private static final int MAX_DIGITS = 16; // 以16进制为例,可以根据需求调整
private char[] stackArray;
public CustomStack(int size) {
stackArray = new char[size];
}
public void push(char value) {
if (stackArray.length == MAX_DIGITS) {
throw new IllegalStateException("Stack is full");
}
stackArray[stackArray.length - 1] = value;
}
public char pop() {
if (stackArray.length == 0) {
throw new IllegalStateException("Stack is empty");
}
return stackArray[--stackArray.length];
}
// 其他辅助方法省略...
public String decimalToBase(int decimal, int radix) {
int index = 0;
while (decimal > 0) {
char digit = (char) ('0' + decimal % radix); // 获取除法余数对应的字符
push(digit);
decimal /= radix;
index++;
}
StringBuilder sb = new StringBuilder();
for (int i = index - 1; i >= 0; i--) {
sb.append(stackArray[i]);
}
return sb.toString();
}
public int baseToDecimal(String base) {
int result = 0;
for (int i = 0; i < base.length(); i++) {
int digitValue = base.charAt(i) - '0'; // 获取字符对应的数值
result *= radix;
result += digitValue;
}
return result;
}
}
// 使用示例:
CustomStack stack = new CustomStack(MAX_DIGITS);
int decimalNumber = 12345;
String hex = CustomStack.decimalToBase(decimalNumber, 16);
int convertedDecimal = CustomStack.baseToDecimal(hex);
```
阅读全文