高手,您好:
    这是我写的Java代码:
    static String BeiJingMyMemRegTimePath = "D:"+File.separator+"MyDoc"+File.separator+"Dport"+File.separator+"BeiJing"+File.separator+"BeiJingSysMemRegTime.txt";
    我定义了一个“String类型的我的操作系统中的地址路径”..
    我的操作系统中对应于上述文件路径的文件“BeiJingSysMemRegTime.txt”,他的所处系统的路径位置如下:
    
    文件中的内容是我记录用户的“授权码提交日期距离1970年1月1日的毫秒数”,我想用来做“授权时间到期”的验证功能的书写...
    文件中的内容图片如下:
    
    我在之后的代码里,写下了下面的“储存上面的Long型数据的"MyArrayList<Long>"对象数组的定义”......
    代码如下:
     static MyArrayList MyBJMemUserAuthorizeTime,MyBJCusUserAuthorizeTime,MyYCMemUserAuthorizeTime,MyYCCusUserAuthorizeTime = new MyArrayList();    因为我想要要这里的“ArrayList”对象数组具备“能够与之后的一个长整型数字进行相加”的能力,并且,保留ArrayList对象数组的“能够向自己的实体添加"新的元素"的功能”,以让我的程序能够面向“不断注册到我的系统中的用户”“进行自己的存储的用户的该字段属性所表示的"用户数量"的运营客户数的扩展”的能力.
    所以,我将上面的ArrayList数组,进行了“下面的MyArrayList”的重写...:
    package d_port_package;import java.util.*;
public class MyArrayList{    private static ArrayList<Long> list = new ArrayList<Long>();
    
    public void add(long value){
        list.add(value);
    }    public void calculate(int index, long value){
        if(index >= list.size()){
            throw new RuntimeException("下标越界 " + index);
        }
        list.set(index, list.get(index) + value);
    }}
    但是,在我的程序里,在我运行了我的代码之后,我的MyEclipse编译器报出了下面的运行时错误:
    
    编译器显示:
    上图中的第89行代码,出现了“空指针异常”..
    编译器的错误提示如下:
    
    请问高手:
    我的代码,错在什么地方...?
    如何修改...?
    谢谢高手的点拨!!
    一百分奉上!! 
                                                             一位日日夜夜向着理想奔跑的筑梦者
                                                             2013年10月7日星期一早晨6点40分javaArrayListJava SEJava sEJava 运行时错误

解决方案 »

  1.   

    我用的读取txt文件中的数据的代码为:
        (ReadTxt类)
        package d_port_package;
    import java.io.BufferedReader;   
    import java.io.FileReader;   
    import java.io.IOException;   
    import java.util.ArrayList;
       
    public class ReadTxt {   
      static ArrayList<String> logData = new ArrayList<String>();
    static String text = null;
        public static void read(String filePath) {   
             try {   
                  FileReader input = new FileReader(filePath);   
                  BufferedReader br = new BufferedReader(input);   
                  while (( text = br.readLine()) != null) {   
                   logData.add(text);
                  }   
                  br.close();   
                  input.close();   
            } catch (IOException e) {   
                  e.printStackTrace();   
            }   
         }   
        
        public static void readMemoryData(String data){
         logData.add(data);
        }
        
        public static void readMemoryArrayData(String[] data){
         int len = data.length;
         for(int i = 0;i<len;i++){
         logData.add(data[i]);
         }
        }
    }  
      

  2.   

    那个list里面还没有数据吧怎么把read方法放在89行后面了你试试输出那个文件的 路径地址正确么
      

  3.   

    空指针很明显,自己debug一看,看下哪一行报的,找到原因应该 就能解决了!!!祝你好运
      

  4.   

    看样子应该是ReadText.logData.get(i) 在i等于特定数值时返回null了。
    但是仔细看代码又感觉不可能。除非你给的代码或环境说明不全。(比如你当中有多线程情况)MyBJMemUserAuthorizeTime 
    ReadTxt 
    ReadTxt.logData
    这些感觉都不可能为null。是在没办法你只有在89行前面吧
    MyBJMemUserAuthorizeTime 
    ReadTxt 
    ReadTxt.logData
    都打印出来看,确认是否为null。(sysout)ReadText.logData.get(i)这个比较麻烦。循环里面写一下
    if( ReadText.logData.get(i)==null){System.out.println("爸爸我错了,我变成null了!!i:"+i) }
      

  5.   

    另外你写的代码是在不是java风格,而且很多问题在里面。写法基本都是反模式,有很多问题不奇怪。慢慢调试。