Não consigo descobrir o erro!

Bom… um bom dia a todos…
Eu estava fazendo esse programa aqui mas na hora de compilar ele dá um erro que não consegui descobrir até agora
AE vai o código

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class calculadora extends JFrame{
private JLabel l1,l2,l3,l4,l5;
private JTextField txt1,txt2,txt3;
private JButton soma,diminui,mult,divi,limpa,ok;
private JPanel p1,p2,p3,p4,p5,p6;
Container c;
Double num1,num2;

public calculadora (){
	super ("JAVA CALC");
	c=getContentPane();
	c.setLayout (new BorderLayout());
	p1.setLayout(new GridLayout (3,1));
	p2.setLayout(new FlowLayout(0));
	p3.setLayout(new FlowLayout(0));
	p4.setLayout (new FlowLayout(0));
	p5.setLayout(new FlowLayout(1));
	p6.setLayout(new FlowLayout(1));
	
	l1 = new JLabel ("Primeiro Número");
	txt1 = new JTextField (15);
	p2.add(l1);
	p2.add(txt1);
	
	l2 = new JLabel ("Segundo Número");
	txt2 = new JTextField (15);
	p3.add(l2);
	p3.add(txt2);
	
	l3 = new JLabel ("Resultado");
	txt3 = new JTextField (15);
	p4.add(l3);
	p4.add(txt3);
	
	p1.add(p2);
	p1.add(p3);
	p1.add(p4);
	
	//cria botões
	soma = new JButton ("+");
	soma.setToolTipText("Somar");
	soma.addActionListener (
			new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					//Double num1 = new Double (txt1.getText().trim());
					//Double num2 = new Double (txt2.getText().trim();		
					String x = txt1.getText();
					int inteiro = Integer.parseInt(x);
					String y = txt2.getText();
					int inteiro2 = Integer.parseInt(y);
					txt3.setText(x+y);
										
					//txt3.setText(resultado);
					
					/*String num1;
					num1 = txt1.getText();
					String num2;
					num2 = txt2.getText();
					
					txt3.setText(num1+num2);
					*/
					
					
					
				}
				
			}
	
	);
	diminui = new JButton ("-");
	diminui.setToolTipText("Subtração");
	mult = new JButton ("*");
	mult.setToolTipText("Multiplicar");
	divi = new JButton ("/");
	divi.setToolTipText("Dividir");
	p5.add(soma);
	p5.add(diminui);
	p5.add(mult);
	p5.add(divi);
	
	
	
	
	//botões ao sul do container
	ok = new JButton ("OK");
	ok.addActionListener(
	  
			//classe interna anônima
			new ActionListener(){

		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			JOptionPane.showMessageDialog (null,"O aplicativo será encerrado");
			System.exit(0);
		}
		  
	  }
	);
	
	limpa = new JButton ("LIMPA");
	limpa.addActionListener(
			
			new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					txt1.setText("");
					txt2.setText("");
					txt3.setText("");
				}
			

			
			}
	
	);

p6.add(ok);
p6.add(limpa);

c.add (p1,BorderLayout.NORTH);
c.add(p5,BorderLayout.CENTER);
c.add(p6,BorderLayout.SOUTH);

setSize(300,500);
setLocation(400,200);
setVisible(true);

}

}

O erro que ocorre é este:

Exception in thread “main” java.lang.NullPointerException
at calculadora.<init>(calculadora.java:18)
at testaCalc.main(testaCalc.java:6)

Por favor me ajudem ae!!!
Obrigado a todos

Olá!

private JPanel p1,p2,p3,p4,p5,p6;

Cade a inicialização desses?

p1.setLayout(new GridLayout(3,1));
        p2.setLayout(new FlowLayout(0));
        p3.setLayout(new FlowLayout(0));
        p4.setLayout(new FlowLayout(0));
        p5.setLayout(new FlowLayout(1));
        p6.setLayout(new FlowLayout(1));

Nessas linhas as instancias que vc esta chamando o metodo serLayout estao referenciando null