# 数据结构(二)--栈的应用(数制转换器)

/**

* <p>Title: 栈的应用－－－－可以进行所有数值之间的转化类</p>

* <p>Description: </p>

* <p>Company: </p>

* @author shaokun305

* @version 1.0

*/

public class test1 {

public static String  ChangeNumeric(String aastr,int n,int m){

//转化成10进制

int aa=0;

String result="";

Stack stack=new Stack();

String mmx=aastr.toUpperCase();

int endint=0;

for(int i=0;i<mmx.length();i++){

int mid=1;

for(int j=0;j<(mmx.length()-1-i);j++)

mid*=n;

//System.out.println("mid="+mid);

// System.out.println("mmx.charAt(i)="+mmx.charAt(i));

int jint=0;

switch(mmx.charAt(i)){

case 'A':

jint=10;

break;

case 'B':

jint=11;

break;

case 'C':

jint=12;

break;

case 'D':

jint=13;

break;

case 'E':

jint=14;

break;

case 'F':

jint=15;

break;

default:

jint=Integer.parseInt(""+mmx.charAt(i));

}

endint=endint+jint*mid;

//System.out.println("endint="+endint);

}

aa=endint;

//aa中现在保存的是10进制的数值

//循环取模求余,进行压栈.

while(aa!=0){

stack.push(new Integer(aa%m));

aa/=m;

}

//弹栈转化获得的整数值,

while(!stack.isEmpty()){

int j=((Integer)stack.pop()).intValue();

String jstr="";

switch(j){

case 10:

jstr="A";

break;

case 11:

jstr="B";

break;

case 12:

jstr="C";

break;

case 13:

jstr="D";

break;

case 14:

jstr="E";

break;

case 15:

jstr="F";

break;

default:

jstr=""+j;

}

result+=jstr;

}

//输出转化结果

return result;

//System.out.println("result="+result);

//System.out.println(new java.util.Date());

}

public test1() {

}

public static void main(String[] args) {

System.out.println(new java.util.Date());

test1 testx = new test1();

String result="";

Stack stack=new Stack();

if(args.length>=3){

int aa=0;//Integer.parseInt(args[0]);

int n=Integer.parseInt(args[1]);

int m=Integer.parseInt(args[2]);

/*/转化成10进制

String mmx=args[0].toUpperCase();

int endint=0;

for(int i=0;i<mmx.length();i++){

int mid=1;

for(int j=0;j<(mmx.length()-1-i);j++)

mid*=n;

//System.out.println("mid="+mid);

// System.out.println("mmx.charAt(i)="+mmx.charAt(i));

int jint=0;

switch(mmx.charAt(i)){

case 'A':

jint=10;

break;

case 'B':

jint=11;

break;

case 'C':

jint=12;

break;

case 'D':

jint=13;

break;

case 'E':

jint=14;

break;

case 'F':

jint=15;

break;

default:

jint=Integer.parseInt(""+mmx.charAt(i));

}

endint=endint+jint*mid;

//System.out.println("endint="+endint);

}

aa=endint;

//aa中现在保存的是10进制的数值

//循环取模求余,进行压栈.

while(aa!=0){

stack.push(new Integer(aa%m));

aa/=m;

}

//弹栈转化获得的整数值,

while(!stack.isEmpty()){

int j=((Integer)stack.pop()).intValue();

String jstr="";

switch(j){

case 10:

jstr="A";

break;

case 11:

jstr="B";

break;

case 12:

jstr="C";

break;

case 13:

jstr="D";

break;

case 14:

jstr="E";

break;

case 15:

jstr="F";

break;

default:

jstr=""+j;

}

result+=jstr;

}*/

result=test1.ChangeNumeric(args[0],n,m);

}

//输出转化结果

System.out.println("result="+result);

System.out.println(new java.util.Date());

}

}

#你编译好这个test1类，如果使用jdk，可以用javac test1.java

Tue Apr 20 11:50:43 CST 2004 //开始时间
result=334E1
Tue Apr 20 11:50:43 CST 2004 //结束时间

Tue Apr 20 11:54:44 CST 2004
result=10011010111101010001111
Tue Apr 20 11:54:44 CST 2004

#具体的利用栈的转换算法说明:

n         n div 8     n mod 8
1348        168           4
168         21            0
21          2             5
2           0             2

• 本文已收录于以下专栏：

## 【数据结构】用栈实现数制的转换

• qq_32353771
• 2015年11月10日 15:02
• 1832

## 数据结构学习之路-第三章：栈的应用

【 声明：版权所有，转载请标明出处，请勿用于商业用途。  联系信箱：libin493073668@sina.com】 前言： 前面已经介绍过栈的相关操作的具体实现，那么现在就按...
• libin1105
• 2015年09月08日 19:15
• 1319

## 数据结构----栈运用的小例子

• jsh13417
• 2013年01月01日 11:28
• 3396

## 数据结构(1)-栈的特性以及简单应用

• qq_22075977
• 2015年12月26日 17:50
• 1214

## 【数据结构栈应用系列】括号匹配

• htq__
• 2016年03月26日 16:59
• 11977

## 常用数据结构栈的应用—-表达式求值

• u014532901
• 2016年09月13日 11:53
• 1481

## [数据结构与算法分析]栈的应用－学习笔记

• u014629433
• 2016年06月06日 09:04
• 649

## Java数据结构-线性表之栈的应用-递归及其应用

• yannanying
• 2015年08月27日 21:12
• 745

## 【数据结构】--几道栈和队列面试题

• lalu58
• 2017年05月05日 01:11
• 415

## 数据结构实验之栈四：括号匹配（栈的运用）

• jert159
• 2014年08月11日 21:26
• 1219

举报原因： 您举报文章：数据结构(二)--栈的应用(数制转换器) 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)