今天晚上做了一道java基础题,题目看起来简单,但是实现起来却花了我近两个小时的时间,认真的做这道题,你会发现它特别考你的基本功。有兴趣的可以试一下哦。
题目: 请用此语言编写如下函数,采用自己的算法,不要使用 printf, sprintf,Format, toString, itoa,toHex等函数。
函数名称 TQ_GetHexStringEx
参数
整数 iNumber
整数 iCount
返回值
字符串类型
函数描述
获得表示iNumber十六进制字符串,宽度不足iCount时,前面补0。
举例
TQ_GetHexStringEx(12,2); 返回 “0C”
TQ_GetHexStringEx(12,8); 返回 “000000C
下面是两种实现方式,不过第二种用到了toString方法。大家有好的算法,欢迎拍砖。
实现一:
package test;
import java.io.*;
public class ToHexTest {
public String s="";
public static void main(String arg[]) {
ToHexTest a = new ToHexTest();
System.out.print(a.TQ_GetHexStringEx(12,8));
}
public String TQ_GetHexStringEx(int iNumber,int iCount){
HexString(iNumber);
int length=s.length();
for(int i=0;i<iCount-length;i++)
{
s="0"+s;
}
return s;
}
//编写数的十六进制
public void HexString(int x) {
if (x > 0)
HexString(x / 16);
else
return;
if (x % 16 == 10) {
s=s+"A";
} else if (x % 16 == 11) {
s=s+"B";
} else if (x % 16 == 12) {
s=s+"C";
} else if (x % 16 == 13) {
s=s+"D";
} else if (x % 16 == 14) {
s=s+"E";
} else if (x % 16 == 15) {
s=s+"F";
} else
s=s+x % 16;
}
}
实现二:
package test;
import java.io.*;
public class ToHex {
public static void main(String arg[]) {
ToHex a = new ToHex();
System.out.print(a.TQ_GetHexStringEx(12, 8));
}
public String TQ_GetHexStringEx(int iNumber,int iCount){
StringBuffer sb=new StringBuffer();
StringBuffer sb1=new StringBuffer();
HexString(iNumber,sb);
for(int i=0;i<iCount-sb.length();i++)
{
sb1.append("0");
}
return sb1.append(sb).toString();
}
//编写数的十六进制
public void HexString(int x,StringBuffer sb) {
if (x > 0)
HexString(x / 16,sb);
else
return;
if (x % 16 == 10) {
sb.append("A");
} else if (x % 16 == 11) {
sb.append("B");
} else if (x % 16 == 12) {
sb.append("C");
} else if (x % 16 == 13) {
sb.append("D");
} else if (x % 16 == 14) {
sb.append("E");
} else if (x % 16 == 15) {
sb.append("F");
} else
sb.append(x % 16);
}
}