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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Alexander 中级黑马   /  2014-3-15 15:52  /  935 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天写一个10进制转换为二进制的代码,当运行时,出现了一个空指针错误,如下面的代码处所示,以前也经常遇到这种情况,不知道是为什么,不知道大家能不能帮我分析下,不剩感激!!
//我的程序是接受一个10进制数(字符串输入),然后将其转换为2进制,以字符串形式返回
//主要出问题的地方就在下面的转换函数中
private static String toBinary(String in) {
                StringBuilder sb = new StringBuilder();
                //用来存放2进制数据的数组
                int []r = null;
                //10进制数
                int value = Integer.parseInt(in);
                 //数组下标
                int count=0;
                while(value != 0) {
                        r[count++] = value % 2;//这里报出空指针错
                        value /= 2;
                }
                //逆序数组r里的数据,就成了对应的2进制数
                for(int i=r.length-1; i>=0; i++) {
                        sb.append(r[i]);
                }
                return sb.toString();
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
  1. private static String toBinary(String in) {
  2.                 StringBuilder sb = new StringBuilder();
  3.                 //用来存放2进制数据的数组
  4.                 int []r = new int[];//这里要动态的创建出一个数组,如果直接等于null的话一使用下标就会报空指针的
  5.                 //10进制数
  6.                 int value = Integer.parseInt(in);
  7.                  //数组下标
  8.                 int count=0;
  9.                 while(value != 0) {
  10.                         r[count++] = value % 2;//这里报出空指针错
  11.                         value /= 2;
  12.                 }
  13.                 //逆序数组r里的数据,就成了对应的2进制数
  14.                 for(int i=r.length-1; i>=0; i++) {
  15.                         sb.append(r[i]);
  16.                 }
  17.                 return sb.toString();
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报

第4行的应该:int[] r = new int[number];
这种数组初始化需要写出数组的长度
回复 使用道具 举报
Alexander 发表于 2014-3-15 18:48
第4行的应该:int[] r = new int[number];
这种数组初始化需要写出数组的长度

那你就写个呗,不行用Integer不用写长度
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马