黑马程序员技术交流社区

标题: 空指针错误 [打印本页]

作者: Alexander    时间: 2014-3-15 15:52
标题: 空指针错误
今天写一个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();
}


作者: itpower    时间: 2014-3-15 15:58
  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. }
复制代码

作者: Alexander    时间: 2014-3-15 18:48
itpower 发表于 2014-3-15 15:58

第4行的应该:int[] r = new int[number];
这种数组初始化需要写出数组的长度

作者: itpower    时间: 2014-3-15 20:20
Alexander 发表于 2014-3-15 18:48
第4行的应该:int[] r = new int[number];
这种数组初始化需要写出数组的长度

那你就写个呗,不行用Integer不用写长度




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2