最近在学JAVA的栈部分的内容,便写了一个小程序实现十进制数向十六进制数的转换
package baoxinhai_test;
import java.util.*;
public class baoxinhai {
public static void main(String[] args) {
String hex = toHex(12500);
if (hex.equalsIgnoreCase("30D4")) {
System.out.println("测试通过");
} else {
System.out.println("测试失败");
}
}
static String toHex(int n) {
String resultString="";
String str="";
Stack<String> dq=new Stack<String>();
int tem;
while(n>0)
{
tem= n%16;
switch (tem) {
case 15: dq.push(str+'F'); break;
case 14:dq.push(str+'E'); break;
case 13:dq.push(str+'D'); break;
case 12: dq.push(str+'C'); break;
case 11:dq.push(str+'B'); break;
case 10:dq.push(str+'A'); break;
default:
dq.push(str+tem);
break;
}
n=n/16;
}
while(!dq.isEmpty())
{
resultString+=dq.pop();
}
System.out.println(resultString);
return resultString;
}
}
主要是验证转换的正确性与否,但是我在编写的时候出现了一个小问题主要是在switch结构体中,我是一开始直接用**dq.push(“tem”)**的形式来进栈非字母的整数,但是最后发现结果出现了错误.
查阅资料发现,是int和String的转换出了问题,将tem转换为String可以采用Integer.toString(tem)即可。