Java - ArrayList

 
Vista:

ArrayList

Publicado por Javier (2 intervenciones) el 05/03/2018 01:37:09
Es mi primera vez trabajando con ArrayList y me sale este error que no entiendo de donde sale

Exception in thread "main" java.lang.NullPointerException
at Agencia.<init>(Agencia.java:7)
at Main.main(Main.java:10)

estas son mis clases:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.util.ArrayList;
import java.util.ListIterator;
 
public class Agencia {
	private ArrayList<Vehiculo> lista;
 
	ListIterator<Vehiculo> itr = lista.listIterator();
 
	public Agencia() {
		lista = new ArrayList <Vehiculo>(10);
	}
 
	public ArrayList<Vehiculo> getLista() {
		return lista;
	}
 
	public void setLista(ArrayList<Vehiculo> lista) {
		this.lista = lista;
	}
 
	public void agregar(Vehiculo v) {
		lista.add(v);
	}
 
	public void borrar(String mod) {
		Vehiculo v = new Vehiculo();
		Vehiculo v2 = new Vehiculo();
		v2.setModelo(mod);
		while(itr.hasNext()) {
			v = itr.next();
			if(v.equals(v2)) {
				v2 = v;
			}
		}
	}
 
	public boolean existencia(String mod) {
		boolean exist;
		int aux=0;
		Vehiculo v = new Vehiculo();
		Vehiculo v2 = new Vehiculo();
		v2.setModelo(mod);
		while(itr.hasNext()) {
			v = itr.next();
			if(v.equals(v2)) {
				aux++;
			}
		}
		if(aux!=0) {
			exist = true;
		}else {
			exist = false;
		}
		return exist;
	}
 
	public void carrosAdquiribles(double dinero) {
		while(itr.hasNext()) {
			Vehiculo v = itr.next();
			if(v.getPrecio()<=dinero) {
				System.out.println(v.toString());
			}
		}
	}
 
	public void mayorRendimiento() {
		int ind = 0;
		double r=0;
		while(itr.hasNext()) {
			Vehiculo v = itr.next();
			if(v.getRendimiento()>r) {
				r = v.getRendimiento();
				ind = lista.indexOf(v);
			}
		}
		Vehiculo v2 = lista.get(ind);
		System.out.println(v2.toString());
	}
 
	public void muestraPickups() {
		while(itr.hasNext()) {
			Vehiculo v = itr.next();
			if(v instanceof Pickup) {
				System.out.println(v.toString());
			}
		}
	}
 
	public String toString() {
		String aux = "";
		while(itr.hasNext()) {
			Vehiculo v = itr.next();
			aux = aux + v.toString();
		}
		return aux;
	}
}












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner keyboard = new Scanner(System.in);
		int opcion, opcion2, maxCap;
		String modelo, fabricante;
		double rendimiento,precio,capacidad,alto,largo,ancho;
		boolean dvd, tipo;
		Agencia agencia = new Agencia();
 
		do {
			System.out.println("Agencia: ");
			System.out.println("1. Agregar");
			System.out.println("2. Borrar");
			System.out.println("3. Existencia");
			System.out.println("4. Carros Adquiribles");
			System.out.println("5. Mejor Rendimiento");
			System.out.println("6. Muestra Pickups");
			System.out.println("7. Todos los autos");
			System.out.println("8. Salir");
			opcion = keyboard.nextInt();
 
			switch(opcion) {
			case 1:
				System.out.println("Que auto es?");
				System.out.println("1. Familiar");
				System.out.println("2. Compacto");
				System.out.println("3. Pickup");
				opcion2 = keyboard.nextInt();
				System.out.println("Que modelo es?");
				if(opcion == 1) {
					System.out.println("Que modelo es?");
					modelo = keyboard.next();
					System.out.println("Que fabricante?");
					fabricante = keyboard.next();
					System.out.println("Cual es su capacidad?");
					capacidad = keyboard.nextDouble();
					System.out.println("Cual es su rendimiento?");
					rendimiento = keyboard.nextDouble();
					System.out.println("Cual es su precio?");
					precio = keyboard.nextDouble();
 
					if(opcion2==1) {
						System.out.println("Tiene para DVD?(1-si | 0-no)");
						int n = keyboard.nextInt();
						dvd = (n==1);
 
						Vehiculo fam = new Familiar(modelo,fabricante,capacidad,rendimiento,precio,dvd);
						agencia.agregar(fam);
					}else if(opcion2 == 2) {
						System.out.println("Que tipo es?(1-gasolina | 0-electrico)");
						int b = keyboard.nextInt();
						tipo = (b==1);
						Vehiculo comp = new Compacto(modelo,fabricante,capacidad,rendimiento,precio,tipo);
						agencia.agregar(comp);
					}else if(opcion2 ==3) {
						System.out.println("Alto?");
						alto = keyboard.nextDouble();
						System.out.println("Largo?");
						largo = keyboard.nextDouble();
						System.out.println("Ancho?");
						ancho = keyboard.nextDouble();
						System.out.println("Maxima Capacidad?");
						maxCap = keyboard.nextInt();
						Vehiculo pickup = new Pickup(modelo,fabricante,capacidad,rendimiento,precio,ancho,alto,largo,maxCap);
						agencia.agregar(pickup);
					}
				}
				break;
			case 2:
				System.out.println("Que modelo desea borrar?");
				String mod1 = keyboard.next();
				agencia.borrar(mod1);
				break;
			case 3:
				System.out.println("Que modelo desea buscar?");
				String mod2 = keyboard.next();
				agencia.existencia(mod2);
				break;
			case 4:
				System.out.println("Cual es su presupuesto?");
				double dinero = keyboard.nextInt();
				agencia.carrosAdquiribles(dinero);
				break;
			case 5:
				agencia.mayorRendimiento();
				break;
			case 6:
				agencia.muestraPickups();
				break;
			case 7:
				agencia.toString();
				break;
			}
		}while(opcion!=8);
		keyboard.close();
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ArrayList

Publicado por Juan Francisco (58 intervenciones) el 05/03/2018 13:53:08
Te da ese erro por que en la linea 7aun no has instanciado el array list de vehiculos , si quieres que se instancia cuando se cree el objeto hazlo dentro del construcor

1
2
3
4
5
6
7
8
9
public class Agencia {
	private ArrayList<Vehiculo> lista;
 
	ListIterator<Vehiculo> itr = lista.listIterator();-->Aqui aun no lo has intaciado entonces es null la lista
 
	public Agencia() {
		lista = new ArrayList <Vehiculo>(10);
 
	}
Cambialo dentro del contructor
1
2
3
4
5
6
7
8
9
public class Agencia {
	private ArrayList<Vehiculo> lista;
 
	private ListIterator<Vehiculo> itr;
 
	public Agencia() {
		lista = new ArrayList <Vehiculo>(10);
                itr=lista.listIterator();
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar