0

Tengo un problema con un proyecto de Java, estoy creando una factura con varias clases, el programa no me muestra error, sin embargo al correr el código me aparece el error:

java.lang.NullPointerException

No sé qué hacer, la variable en la que tengo el problema es de un array. La creación de la variable Producto está creada en otra clase, con variables de tipo int y String. Dejo el código del programa (el error lo marca en la línea 61 y lo liga con el main del programa)

package clases;
import java.util.ArrayList;
import java.util.Iterator;
/***/

public class Factura extends Comprobante 
{
    //VARIABLES
    private ArrayList<Producto>mProducto;
    private float total;
    private Cliente mCliente;
    
    public Factura(int t, int n, Fecha f, Cliente cli, Producto j)
    {
        super (t,n,f);
        setCliente(cli);
        setProducto(Integer.parseA);
        String.parse(A)
        
    }
    
    public Cliente getCliente()
    {
        return mCliente;
    }
    public void setCliente (Cliente val)
    {
        this.mCliente = val;
    }
    
    public float getTotal()
    {
        return total;
    }
    public void setTotal (float val)
    {
        this.total = val;
    }
    
    public ArrayList<Producto> getProducto()
    {
        return mProducto;
    }
    public void setProducto (ArrayList<Producto>val)
    {
        this.mProducto = val;
    }
    
    
    
    //METODOS
    public void agregarProducto(Producto p)
    {
       mProducto.add(p);
        setTotal(getTotal()+p.getPrecio());
    }
    
    public void mostrarProductos()
    {
        Iterator<Producto>iter = mProducto.iterator();
        while (iter.hasNext())
        {
            Producto p = iter.next();
            System.out.printf("Código: %d Descripción: %s Precio: %5.2f\n", p.getCodigo(), p.getDescripcion(), p.getPrecio());
        }
    }
    
    public void mostrar()
    {
        System.out.printf("Tipo: %c Número; %d Fecha: %d/%d/%d\n",getTipo(),getNumero(),getFecha().getDia(),getFecha().getMes(),getFecha().getAnio()); System.out.printf("Cliente: \n");
        System.out.printf("Código: %d Razon Social: %s \n", mCliente.getCodigo(),mCliente.getRazonSocial());
        System.out.printf("Productos: \n");
        System.out.printf("Producto: %d", ArrayList<mProducto>);
        //mostrarProductos();
        System.out.printf("Total: %6.2f \n",getTotal());
        
    }
}
Eduardo Javier Maldonado
  • 2,455
  • 7
  • 20
  • 41
  • Cuál es la línea 61? – E. Betanzos Jun 24 '20 at 18:17
  • 1
    Al parecer no inicializas la lista `mProducto` en ningún lugar, por eso cuando intentas usarla te lanza el NPE. – E. Betanzos Jun 24 '20 at 18:19
  • En public void agregarProductos(), en la siguiente línea donde coloco m.Producto.add(p) –  Jun 24 '20 at 18:19
  • En el main sí le agregué valores a los productos, pero creo que no los asocia con la lista... como inicializo la lista?? –  Jun 24 '20 at 18:22
  • Exacto, lo que te está pasando en lo que te indico en el segundo comentario. Agrega en el constructor de la clase, y debajo de la llamada a `super()`, debes inicializar la lista: `mProducto = new ArrayList();` – E. Betanzos Jun 24 '20 at 18:23
  • Gracias friend!!! :) –  Jun 24 '20 at 18:28
  • ¿Responde esto a tu pregunta? [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – Mauricio Contreras Jun 24 '20 at 18:31

0 Answers0