Array para calcular fatorial

Galera, eu gostaria da ajuda de vcs pra saber qual o erro no seguinte código:

package atividade;

import java.util.Scanner;

public class Atividade {

   public static  int n;
   public static long result;
   public  static int a[]= new int[n];
    
    public static void main(String[] args) {
        
        System.out.println("Entre com o número para o cálculo do fatorial");
        int n= new Scanner(System.in).nextInt();
        int x = n;
        int aux = n-1;
        if(n<=100){
        for(n=n-1;n>=0;n--){
            a[n]= n;    
        }
        }
        else{
            if(n<0){
                System.out.println("Numéro negativo não tem fatorial");
            }
        
    
        result = a[aux] * a[aux-1];
        
        
        for(aux=aux-2;aux>0;aux--){
         result = result * (a[aux]);   
        }
            
        
        
        for(x=x-1;x>=0;x--){
            System.out.println(a[x]+" * " + a[x-1]);
        }
        
        System.out.println("=" + result);
        
    }
        
    }
      
}

O código é compilado com sucesso, mas ainda sim acusa o seguinte erro ( para o número 2):

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at atividade.Atividade.main(Atividade.java:23)
Java Result: 1

Obs:eu sei que o índice do array começa com 0, mas nao consigo identificar a falha no código.

Preciso fazer o seguinte:
Utilizando os conhecimentos adquiridos na aula de LPOO desenvolva uma aplicação Java que calcule o Fatorial de “n” inteiros positivos (n!). Sendo n! o produto de todos os inteiros positivos possíveis, a aplicação deverá solicitar ao usuário a entrada de um número (n) e calcular o seu Fatorial, exibindo a expressão fatorial e o seu resultado.

Entrada

Informe um número para o cálculo fatorial:

4

Processamento

4 x 3 x 2 x 1

Saída

4! = 4 x 3 x 2 x 1 => 24

Queria fazer uma perguntinha indecente - por que é que precisa usar array? Não vi nada no enunciado da sua lição de casa que force você a usar um array.

Além disso, use double para calcular o fatorial. Se usar int, você consegue no máximo calcular o fatorial de 12, e se usar long, no máximo o fatorial de 20. Usando double, você pode chegar ao fatorial de 170.

Seguinte;

O erro ocorre pq vc declarou seu array a da seguinte forma:

public static  int n;  
   public static long result;  
   public  static int a[]= new int[n];

ou seja, N é um int e sempre tem um valor definido, que no caso é zero, então seu array A tem tamanho zero. Mesmo que depois vc pega um valor que o usuário digitou maior que zero e atribui a N, seu array A fica com zero posições.

Vc deverá fazer da seguinte forma:

public class Atividade {  
	  
public static  int n;  
public static long result;  
public  static int a[];
	      
public static void main(String[] args) {  
	          
System.out.println("Entre com o número para o cálculo do fatorial");  
int n= new Scanner(System.in).nextInt();  
a = new int[n];  

Qualquer coisa posta novamente !

Abraços