大家好,这是在下的第一篇文章,希望大家能从中学到新知识。(默认大家都学过栈了)
采用栈的原因:n进制转换就是通过对n进行取余数的过程,当取余数后直接输出时,得到的结果与正确结果是相反的,而利用栈后进先出的特点,就可以直接输出正确结果。
16进制转换重点就是将10-15分别转为A-F,昨晚脑袋一热,居然用了字符串类型的栈去实现,其实差不多就是结果输出是字符串类型,以下是代码,大家可以参考参考。
import java.util.*;
public class ShiLiu {
private static int N=100;
private static int top=-1;
//栈通过字符串类型的数组来实现
private static String data[] = new String[N];
//判断栈是不是空
static boolean isEmpty() {
return top==-1;
}
//入栈
static void push(String a) {
data[++top]=a;
}
//出栈
static String pop() {
return data[top--];
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个10进制数:");
int d=sc.nextInt();
String y=zhuanhua(d);
System.out.println(d+"转化为16进制为:"+y);
sc.close();
}
//10进制到16进制转化的方法
static String zhuanhua(int n) {
String str="";
String str1="";
while(n>0) {
//t为余数
int t=n%16;
switch(t) {
case 10:push(str+'A');
break;
case 11:push(str+'B');
break;
case 12:push(str+'C');
break;
case 13:push(str+'D');
break;
case 14:push(str+'E');
break;
case 15:push(str+'F');
break;
default:push(str+t);
break;
}
n=n/16;
}
while(!isEmpty()) {
str1=str1+pop();
}
//返回一个字符串
return str1;
}
}
下次再找时间贴一个利用整型栈实现的代码。在下现在课程上的是数据结构以及移动开发,所以我会尽量将贴近课程的内容分享出来和大家一起学习,大家有什么不懂的也可以问我,我会尽力解答的,希望大家可以多多关注我哟。