A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
十进制转换16进制程序  按照程序输出应该是0000003c ,但是实际输出是aaaaaa3c。  char的默认值不是0吗?怎么输出是a?我已经详细的对比了程序和老师的一样(ps:for(int x=0;x<arr.length;x++) 我把int x=pos  改成 x=0 了  不然 显示不出多余的 数 ) 我自己定义了一个数组 默认输出是a  求大神解答?
class  Text1
{
        public static void main(String[] args)
        {
               
                char[] abc=new char[4];
                System.out.println(abc[3]+"!");
                toHex(60);
               
        }
                public static void toHex(int num)
        {
                char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char[] arr=new char[8];
                int pos=arr.length;
                while(num!=0)
                {
                        int temp=num&15;
                        //System.out.println(chs[temp]);
                        arr[--pos]=chs[temp];
                        num=num>>>4;
                }
                //储存数据arr的遍历
                for(int x=0;x<arr.length;x++)
                {
                         System.out.print(arr[x]+",");
                }
        }
}

QQ截图20150518211807.png (1.4 KB, 下载次数: 47)

输出结果

输出结果

最佳答案

查看完整内容

应该是你的字符数组arr初始化有问题,应该是字符数组初始化的时候里面默认值是'a',你打印一下看看。 打印结果是:

14 个回复

倒序浏览
应该是你的字符数组arr初始化有问题,应该是字符数组初始化的时候里面默认值是'a',你打印一下看看。
  1. class  ToHexDemo
  2. {
  3.          public static void main(String[] args)
  4.         {
  5.                         toHex(60);
  6.                        
  7.         }
  8.        
  9.         public static void toHex(int num)
  10.         {
  11.                         char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  12.                         char[] arr=new char[8];
  13.                         //打印一下arr,看看里面初始化的内容
  14.                         System.out.print("初始化arr:");
  15.                         sopArr(arr);
  16.                         int pos=arr.length;
  17.                         while(num!=0)
  18.                         {
  19.                                         int temp=num&15;
  20.                                         //System.out.println(chs[temp]);
  21.                                         arr[--pos]=chs[temp];
  22.                                         num=num>>>4;
  23.                         }
  24.                         //打印一下arr,看看里面的赋值内容
  25.                         System.out.print("\n\n给arr赋值后:");
  26.                         sopArr(arr);
  27.         }

  28.         //打印方法
  29.         public static void sopArr(char[] arr){
  30.                 //输出arr里面的内容
  31.                 System.out.println("\narr里面的内容是:");
  32.                 for(int x=0;x<arr.length;x++)
  33.                 {
  34.                                  System.out.print(arr[x]+",");
  35.                 }
  36.                 System.out.println("\narr里面的字节对应的ASCII码是:");
  37.                 //讲arr里面的字节转换成ASCII输出
  38.                 for(int x=0;x<arr.length;x++)
  39.                 {
  40.                                  System.out.print((int)arr[x]+",");
  41.                 }
  42.         }
  43. }
复制代码

打印结果是:


回复 使用道具 举报
最后的for循环条件不对
回复 使用道具 举报
被淹死的虫子 发表于 2015-5-19 07:53
最后的for循环条件不对

额。。。。没看全问题,囧了!是解决a不是解决多余数字。。。我自己机子上运行没有你的问题
回复 使用道具 举报
很诡异啊,,,,,
回复 使用道具 举报
[code]class  Text1
{
        public static void main(String[] args)
        {
               
                toHex(60);      
        }
        public static void toHex(int num)
        {
                char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char[] arr=new char[8];
                int pos=arr.length;
                while(num!=0)
                {
                        int temp=num&15;
                        System.out.println(chs[temp]);
                        arr[--pos]=chs[temp];
                        num=num>>>4;
            
                }
                //储存数据arr的遍历
                for(int x=pos;x<arr.length;x++)
                {
                         System.out.print(arr[x]+",");
                }
        
        }
}
回复 使用道具 举报
Sky丶 中级黑马 2015-5-19 20:01:41
7#
QQheima 发表于 2015-5-19 10:33
应该是你的字符数组arr初始化有问题,应该是字符数组初始化的时候里面默认值是'a',你打印一下看看。

打印 ...

恩 class  Text1
{
        public static void main(String[] args)
        {
               
                char[] abc=new char[4];
                System.out.println(abc[3]+"!");
                toHex(60);
               
        }
原程序测试了  默认输出是a  不知道怎么回事
回复 使用道具 举报
Sky丶 中级黑马 2015-5-19 20:27:19
8#
难道要 换系统?刚买的的电脑 换个盗版系统感觉对不起正版的钱 。。。。。。
回复 使用道具 举报
Sky丶 中级黑马 2015-5-21 09:45:27
9#
QQheima 发表于 2015-5-18 21:28
应该是你的字符数组arr初始化有问题,应该是字符数组初始化的时候里面默认值是'a',你打印一下看看。

打印 ...

我想问下怎么解决这个问题 ?

QQ截图20150521094359.png (8.83 KB, 下载次数: 42)

QQ截图20150521094359.png
回复 使用道具 举报
Sky丶 发表于 2015-5-21 09:45
我想问下怎么解决这个问题 ?

不知道,这个ASCII表是系统的吧,没设置过,这个给你一个ASCII码对照
回复 使用道具 举报


你的a是怎么出来的呢?
回复 使用道具 举报
QQheima 发表于 2015-5-21 11:14
不知道,这个ASCII表是系统的吧,没设置过,这个给你一个ASCII码对照

好吧 谢谢了
回复 使用道具 举报
何雨 发表于 2015-5-21 17:45
你的a是怎么出来的呢?

估计是主板问题  换了系统还是不行  不影响编程  先这样用着吧
回复 使用道具 举报
我咋复制楼主的出来的是  , , , , , ,3,c呢?
回复 使用道具 举报
好神奇 你的a咋出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马