我先写了一个顺序栈的类,代码如下:(没语法错误)
代码
public class ArrayStack {
public int[] data;
public int maxLength = 50;
public int top;
public void initStack() {
data = new int[maxLength];
top = -1;
}
public void push(int dataValue) {
data[top + 1] = dataValue;
top++;
}
public int pop() {
if(top < 0) {return 4444;}
int i = data[top];
top--;
return i;
}
public int getTop() {
if(top < 0) {return 44444;}
return data[top];
}
public void setEmpty() {
top = -1;
}
public boolean empty() {
if(top < 0) return true;
return false;
}
}
现在我想用它解决进制转换的问题,代码如下:import javax.swing.JOptionPane;
public class Transfer {
public static void main(String[] args) {
ArrayStack ob = new ArrayStack();
String str1 = JOptionPane.showInputDialog("你想转什么数?");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("你想转成几进制数?");
int j = Integer.parseInt(str2);
ob.initStack();
while(i >= 1) {
ob.push(i%j);
i = i / j;
}
while(ob.empty() == false) {
System.out.print(ob.pop());
}
}
}
现在问题是,如果是超出10进制以后,数据表示有问题。
如何将它修改一下,让它也能装成16进制的数
代码
public class ArrayStack {
public int[] data;
public int maxLength = 50;
public int top;
public void initStack() {
data = new int[maxLength];
top = -1;
}
public void push(int dataValue) {
data[top + 1] = dataValue;
top++;
}
public int pop() {
if(top < 0) {return 4444;}
int i = data[top];
top--;
return i;
}
public int getTop() {
if(top < 0) {return 44444;}
return data[top];
}
public void setEmpty() {
top = -1;
}
public boolean empty() {
if(top < 0) return true;
return false;
}
}
现在我想用它解决进制转换的问题,代码如下:import javax.swing.JOptionPane;
public class Transfer {
public static void main(String[] args) {
ArrayStack ob = new ArrayStack();
String str1 = JOptionPane.showInputDialog("你想转什么数?");
int i = Integer.parseInt(str1);
String str2 = JOptionPane.showInputDialog("你想转成几进制数?");
int j = Integer.parseInt(str2);
ob.initStack();
while(i >= 1) {
ob.push(i%j);
i = i / j;
}
while(ob.empty() == false) {
System.out.print(ob.pop());
}
}
}
现在问题是,如果是超出10进制以后,数据表示有问题。
如何将它修改一下,让它也能装成16进制的数
设一个char[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};把这一句:ob.push(i%j);改为:ob.push(char[i%j]);
这样你就可以把10进制转为36进制以内的进制了。
设一个
char[] charSet={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z'}; 把这一句:ob.push(i%j);改为:ob.push(charSet[i%j]);
这样你就可以把10进制转为36进制以内的进制了。