刚学java,试用timer,timertask
import java.util.*;
import java.io.*;public class doTask {
  private java.util.Timer timer;
  private java.util.TimerTask task;
  public doTask(java.util.TimerTask task) {
    this.timer = new Timer();
    this.task = task;
  }
  public void start(int delay, int internal) {
    timer.schedule(task, delay * 1000, internal * 1000);  public static void main(String[] args) {
    java.util.TimerTask task1 = new myTask("Job 1");    doTask pt = new doTask(task1);
    pt.start(1,3);  }}
public class myTask extends java.util.TimerTask {
  public String jobName;  public B[] tt;
  private int i;
  public void run() { 
  
    System.out.println(tt[0].a);//在这里出现nullpointerexception
    tt[0].a=tt[0].a+1;
  }  public myTask(String jobName) {
    B[] tt=new B[2];//如果这两行放在run()中就没有异常,是什么原因,如何还解决
    tt=new B();     //  }
}
class B {
public int a;
public int b;
public B(){
a=1;
b=2;

}
}

解决方案 »

  1.   

     public B[] tt; 
    你没有给他初始化哦。
    所以你再使用tt[0].a 出现了空指针你再构造器里面的代码。就是在初始化!
      

  2.   

    我晕,lz你的代码在编译的时候不报错吗?帮你改了下。没有改变你的思路。自己对比下看看吧。
    你的那个问题,可能就是因为你代码混乱产生的错误。
    package test;import java.util.*;
    import java.io.*;public class DoTask { private static java.util.Timer timer;
    private static MyTask task; public DoTask() {
    timer = new Timer();
    } public static void start(int delay, int internal) {
    timer.schedule(task, delay * 1000, internal * 1000);
    } public static void main(String[] args) {  

    DoTask pt = new DoTask();

    MyTask task =  pt.new MyTask("Job 1");  start(1, 3); } public class MyTask extends java.util.TimerTask {
    public String jobName; public B[] tt;
    private int i; public MyTask(String jobName) {
    this.jobName = jobName;
    tt = new B[2];//如果这两行放在run()中就没有异常,是什么原因,如何还解决 
    //tt=new B();     //  }

    public void run() { System.out.println(tt[0].a);//在这里出现nullpointerexception 
    tt[0].a = tt[0].a + 1;
    }
    } class B {
    public int a;
    public int b; public B() {
    a = 1;
    b = 2; }
    }}
      

  3.   

    tt=new B[2];是声明两个B类型数组对象,对其进行初始化,
    tt[0].a=tt[0].a+1; 这就是一个null,就会产生空指针异常向java2000_net 学习!!