Java.lang.NullPointerException: Cannot read field "tipo" because "m" is null
Publicado por Mónica (5 intervenciones) el 24/02/2024 19:37:16
Buenas tardes:
Estoy escribiendo un método que me calcule el saldo de una cuenta. Después de muchas vueltas, el método calculaSaldo() ya no me da problemas de compilación, pero al ejecutarlo sale el siguiente mensaje:
Exception in thread "main" java.lang.NullPointerException: Cannot read field "tipo" because "m" is null
Por favor, ¿puede alguien decirme por qué?.
Gracias.
Estoy escribiendo un método que me calcule el saldo de una cuenta. Después de muchas vueltas, el método calculaSaldo() ya no me da problemas de compilación, pero al ejecutarlo sale el siguiente mensaje:
Exception in thread "main" java.lang.NullPointerException: Cannot read field "tipo" because "m" is null
Por favor, ¿puede alguien decirme por qué?.
Gracias.
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
// Vector que garda os datos do programa
Movemento[] movementos = new Movemento[MAX_MOVEMENTOS];
// Movementos anotados no vector
int numMovementos = 0;
// Bucle principal da aplicacion
void bucleApp() {
Opcion opcion;
do {
mostraListaOpcions();
opcion = solicitaOpcion();
...
case SALDO ->
calculaSaldo();
}
} while (opcion != Opcion.SAIR);
}
...
}
}
// Solicitar ao usuario a opcion que quere executar
Opcion solicitaOpcion() {
Scanner scanner = new Scanner(System.in);
int opcion;
System.out.print("\nIntroduce o numero de opcion a executar: ");
opcion = scanner.nextInt();
return Opcion.values()[opcion];
}
// Anotar un novo movemento
void anotaMovemento(TipoMovemento tipo) {
Scanner scanner = new Scanner(System.in);
...
}
// Mostrar a lista de movementos:
void listaMovementos() {
System.out.println();
for (var indice = 0; indice < numMovementos; indice++) {
System.out.println(movementos[indice]);
}
System.out.println();
}
// Calcular o saldo
void calculaSaldo() {
BigDecimal saldo;
saldo = new BigDecimal(0);
for (Movemento m: movementos) {
if (m.tipo == TipoMovemento.ABONO) {
saldo = saldo.add(m.importe);
continue;
} else {
saldo = saldo.subtract(m.importe);
}
System.out.println(saldo);
}
}
}
Valora esta pregunta


0