Ошибка в коде, не понимаю причину

В итоге ошибка по типу

Exception in thread "main" java.lang.NullPointerException
at labs.notes.calculate(notes.java:13)
at labs.notes.main(notes.java:32)

Которая ссылается на строку с переменной "t[0]=0;""

Я так понимаю, что это из-за объявления "static double [] t,i1,i2,u;" Если поменять строку на допустим "static double []t= new double[3];" То ошибки не будет, но со всеми переменными (t,i1,i2,u) такое не провернешь. Хочу спросить, что мне исправить.

static double [] t,i1,i2,u;
static int n;

public static void calculate() {
    double w1=1000, w2=5*w1, L=0.1e-3,
    M=0.6*L, R=10, E0=5, E1=5,
    E2=5, t0=0, t1=0.02;
double dt = (t1-t0)/(n-1);
t[0]=0;
for(int i = 0;i<n;i++)
    t[i]=t[i-1]+dt;
for(int i=0;i<n;i++)
    i1[i]=E1/(L*w1)*Math.sin(w1*t[i]);
i2[0]=0; u[0]=0;
for(int i=1;i<n;i++) {
    i2[i]=(1/(1+R*dt/L))*(i2[i-1]+dt/L)*(E0+E2*Math.cos(w2+t[i]));
    u[i]=-M/dt*(i2[i]-i2[i-1]+i1[i]-i1[i-1]);
}
    for(int i=0;i<n;i++) {
        i1[i]*=L*w1;
        i2[i]*=L*w1;
    }}

В мейне у меня:

public static void main(String[] args) {
    Scanner scan = new Scanner (System.in); 
    System.out.println("n:"); 
    int n=scan.nextInt(); 
    i1 =  new double[n];
i2 =  new double[n];
u =  new double[n];

calculate();
}}

Ответы (1 шт):

Автор решения: Igor
/*int*/ n = scan.nextInt(); 
t = new double[n];
...
for (int i = 1; i < n; i++)
  t[i] = t[i - 1] + dt;
→ Ссылка