Java通过栈实现10进制转16进制

大家好,这是在下的第一篇文章,希望大家能从中学到新知识。(默认大家都学过栈了偷笑

采用栈的原因: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;
	}

}
下次再找时间贴一个利用整型栈实现的代码。在下现在课程上的是数据结构以及移动开发,所以我会尽量将贴近课程的内容分享出来和大家一起学习,大家有什么不懂的也可以问我,我会尽力解答的,希望大家可以多多关注我哟。

猜你喜欢

转载自blog.csdn.net/qq_40181063/article/details/80481591