今天晚上做了一道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); }}