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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 路边小色狼 于 2013-8-31 00:28 编辑

按老师讲的结果应该是000000000000110才对啊,可是我的运行结果是aaaaaaaaaaaaa110.按道理没赋值的元素应该是0啊。
对了好多遍了,没打错啊。耐心的朋友帮我看一下,谢谢

class Tobin
{
public static void main(String[] args)
{
  toBin(6);
}
public static void toBin(int num)
{
   char[] chs={'0','1'};//定义二进制表

      char[] arr=new char[32];//建一个数组当容器
      int pos=arr.length;//定义一个指针
      while(num!=0)
{
  
  int temp=num&1;
  arr[--pos]=chs[temp];//把num&1所得值赋予arr数组的最后一位
  num=num>>>1;
}
  //打印出arr数组
  
  for(int x=0;x<arr.length;x++)  //故意定义x初始
     {
   
   System.out.print(arr[x]);
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

11 个回复

正序浏览
弱弱地问下怎么上图啊{:soso_e112:}
回复 使用道具 举报
这是我用MyEclipse 7.0打印的结果
C:\Users\Administrator\Desktop\QQ图片20130901124305.jpg
应该是用的编程软件的原因吧
回复 使用道具 举报
xiaoxu 发表于 2013-8-30 23:32
这个方法本来就是想不打印前面的0,你如果非要打印的话,可以在
  while(num!=0)
{

我知道了,你是对的
class test1
{
public static void main(String[] args)
{
  char[] arr=new char[10];
  System.out.println(arr[1]);
}
}

回复 使用道具 举报
xiaoxu 中级黑马 2013-8-30 23:32:32
9#
路边小色狼 发表于 2013-8-30 23:00
这样只是不打印出来而已,但前面的还元素还是a啊

这个方法本来就是想不打印前面的0,你如果非要打印的话,可以在
  while(num!=0)
{
  
  int temp=num&1;
  arr[--pos]=chs[temp];
  num=num>>>1;
}
把while循环条件改成循环32次,num!=0结束意味arr数组可能有很多都没有符初值,所以打印出aaa很正常
回复 使用道具 举报
月黑风高 发表于 2013-8-30 23:20
你确定编译运行的是上面的类吗?tobin4类与tobin类???

我复制过去运行的,估计是我的电脑挂了,你用就行,我就不行
回复 使用道具 举报

你确定编译运行的是上面的类吗?tobin4类与tobin类???
回复 使用道具 举报
月黑风高 发表于 2013-8-30 23:00
有图有真相,你代码木有问题,x不从pos开始,前面打印的也都是空格,不会是aaaaa

回复 使用道具 举报
月黑风高 发表于 2013-8-30 23:00
有图有真相,你代码木有问题,x不从pos开始,前面打印的也都是空格,不会是aaaaa

有图有真相
回复 使用道具 举报
有图有真相,你代码木有问题,x不从pos开始,前面打印的也都是空格,不会是aaaaa



QQ拼音截图未命名.png (31.05 KB, 下载次数: 24)

结果木有问题

结果木有问题
回复 使用道具 举报

这样只是不打印出来而已,但前面的还元素还是a啊
回复 使用道具 举报
for(int x=0;x<arr.length;x++) 该为
for(int x=pos;x<arr.length;x++) 就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马