Java - non-static variable this cannot be referenced from a static context

Estava aprendendo a criar classes e fui criar a minha, o problema é quando eu fui instanciar minha classe na main e fui compilar apareceu essa mensagem “non-static variable this cannot be referenced from a static context” . Alguém para me ajudar ?

import java.util.Scanner;
public class a{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
for(int i=0;i<3;i++) {
String nome=input.nextLine();
Pessoa p=new Pessoa();
p.setNome(nome);
p.mostrar();
}

}

class Pessoa {
private String nome;

   public Pessoa(String nome) {
       this.nome=nome;

   }

   public Pessoa() {
       this.nome="";
  }

  public void setNome(String nome) {
      this.nome=nome;
  }
  public String getNome() {
      return this.nome;
  }

  public void mostrar() {
      System.out.println("Nome: "+this.nome);
  }

}
}

Vc criou Pessoa como uma classe aninhada não-estática. Sendo assim, vc não pode instanciá-la dentro de um método estático como vc fez.

Para contornar isso há 2 coisas que vc pode fazer:

1. Tornar Pessoa uma classe aninhada estática assim:

public class Programa {
  public static void main(String... args) {
    Pessoa pessoa = new Pessoa("João");
    pessoa.mostrar();
  }

  static class Pessoa {
    private String nome;

    public Pessoa(String nome) {
      this.nome = nome;
    }

    public void mostrar() {
      System.out.println("Nome: " + this.nome);
    }
  }
}

2. Instanciar primeiro a classe Programa e depois instanciar a classe Pessoa.

public class Programa {
  public static void main(String... args) {
    Programa programa = new Programa();
    Pessoa pessoa = programa.new Pessoa("João");
    pessoa.mostrar();
  }

  class Pessoa {
    private String nome;

    public Pessoa(String nome) {
      this.nome = nome;
    }

    public void mostrar() {
      System.out.println("Nome: " + this.nome);
    }
  }
}