永发信息网

数据结构JAVA 数制转换问题

答案:2  悬赏:70  手机版
解决时间 2021-05-11 07:04
栈的简单应用:数制转换问题
将十进制数N转换为r进制的数,其转换方法利用辗转相除法:以N=3456,r=8为例转换方法如下:
N N / 8 (整除) N % 8(求余)
3467 433 3 低
433 54 1
54 6 6
6 0 6 高
所以:(3456)10 =(6563)8
我们看到所转换的8进制数按底位到高位的顺序产生的,而通常的输出是从高位到低位的,恰好与计算过程相反,因此转换过程中每得到一位8进制数则进栈保存,转换完毕后依次出栈则正好是转换结果。
算法思想如下:当N>0时重复1,2
1. 若 N≠0,则将N % r 压入栈s中 ,执行2;若N=0,将栈s的内容依次出栈,算法结束。
2. 用N / r 代替 N
<用泛型编程>
最佳答案

import java.util.ArrayList;
import java.util.List;



class Stack {
int idx = 0; //栈顶指针
private List<Integer> data = new ArrayList<Integer>(); //用ArrayList来保存堆栈数据

public void push(int n) {


//压栈
data.add(n);
idx++;
}

public int pop() {


//弹栈
idx--;
return data.get(idx);
}

public int getId() {


//获取栈顶指针
return idx;
}
}



public class Conversion {
private Stack stack = new Stack();
public static void main(String[] args) {
Conversion cs = new Conversion();
int x1 = 16;
int y1 = 16;
String rs = cs.convert(x1,y1);
System.out.println("The result is:"+rs);
}

public String convert(int x,int y) {
int num = 0;
String result = ""; //最终结果
if(x/y > 0) {
while(x/y > 0) {
stack.push(x%y);
x=x/y;
}
stack.push(x);//把最后一个数字压栈(即结果的第一位)
while(stack.idx > 0) {
num = stack.pop();
if(y == 16) {
switch(num) {
case 10:
result = result + "A";
break;
case 11:
result = result + "B";
break;
case 12:
result = result + "C";
break;
case 13:
result = result + "D";
break;
case 14:
result = result + "E";
break;
case 15:
result = result + "F";
break;
default:
result = result + num;
}
} else {
result = result + num;
}
}
return result;
} return Integer.toString(x);
}
}



不知道是不是楼主想要的,有什么问题可以联系我。其实在util包中有对堆栈的实现。还是自己写个好了。


水平有限难免代码不完善,欢迎指正!

全部回答
N N / 8 (整除) N % 8(求余) 3467 433 3 低 433 54 1 54 6 6 6 0 6 高 所以:(3456)10 =(6563)8
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爸爸在家里穿着内裤怎么办
报考贵校我的学历能否被承认
爱的深,受了伤很伤我该怎么办
东风天龙半挂多少钱啊!前四后八的自卸怎么样
五粮液哪个系列好,求推荐狗粮,雪山,牛油果
开通超级QQ后,进入家园社区去玩游戏产生的GP
怎样知道他【她】爱不爱我
重庆为什么人口这么多,重庆小面是怎么火起来
荷花赞诗词,关于春暖花开的精美诗句
营销属于大学里面的哪个系?
最好的股票叫什么名字,股票的5条彩线都叫什么
怎样让自己感觉时间过得快点
我男朋友的异性朋友太多,不知道怎么办好了
在四川那可以买到长毛兔
戏 要怎样演 才能不投入
推荐资讯
从安徽亳州如何去青海海东、海东的经济状况怎
在什么地方输入ARP -a
蝴蝶前面填动词,飞蝴蝶是吗
CAD到底有哪些公司或者厂商在出版?
win7上网蓝屏了
何为“正常发光”
火的使用对我们的意义,钱对人到底有什么意义
蜀门顶级多少
用一句话起网名大全,帮我用一句话,或者一个
花儿朵朵10强的单曲都是什么??网上现在有吗
怎么看照片是不是P过?【酌情追加】
告诉我所有日本动漫电影
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?