本帖最后由 曹恒业 于 2012-7-10 10:12 编辑
class chabiaofa
{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr1 =new char[8];
int pos = 0;
while(num!=0)
{
int temp=num&15;
arr1[pos]=arr[temp];
pos++; //问题出在这里,循环总共执行2次,因为pos的值变化为0,1,2,。所以后面输出时从pos为2开始,所以多了一个空格
num=num>>>4;
}
for(int y =pos;y>=0;y--)
System.out.print(arr1[y]);
}
}
这个类的运算结果是 (空格3c)我想问的是如果pos的指针到了arr1的2角标为 那么空格的值应该是0呀
我感觉结果应该是 (03c)为什么是 (空格3c)呢 请教? | 因为char类型的默认初始值是'u\0000',所以是空格,不是0
针对楼主的问题,最简单直接的改动如下:
class chabiaofa
{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr1 =new char[8];
int pos = 0;
while(num!=0)
{
int temp=num&15;
arr1[pos]=arr[temp];
num=num>>>4;
if(num!=0) //在pos自增之前,先判断num是否已经为0,如此可避免产生多余的空格
pos++;
}
for(int y =pos;y>=0;y--)
System.out.print(arr1[y]);
}
}
希望有帮到你~~
|