Java - ayuda a resolver un error

 
Vista:
sin imagen de perfil

ayuda a resolver un error

Publicado por luis cortes (4 intervenciones) el 22/09/2021 22:59:43
import java.util.Scanner;

public class Parqueadero2 {

static Scanner s;

public static void main(String[] agrs) {

final int carro = 60;
final int moto = 30;
final int bici = 10;

float minuto = 0, resultado = 0;
float totalf = 0;

resultado = totalf;

int opcionP, opcionV;

opcionP = menuP();


while(opcionP !=3) {
if(opcionP == 1) {
System.out.println("Elija el vehiculo");
opcionV = menuV();
System.out.println("Tiempo en minutos estacionado: ");
minuto = s.nextFloat();

switch(opcionV) {
case 1:
resultado = vehi1 (minuto, carro);
break;
case 2:
resultado = vehi2 (minuto, moto);
break;
case 3:
resultado = vehi3 (minuto, bici);
break;
default:
System.out.println("Opcion no valida");
break;
}
}

if(opcionP ==2) {
System.out.println("Total facturado en el dia "+ resultado);
resultado += 1;
}

}

}

private static float vehi1(float minuto, int carro) {
float resultado = minuto * carro;
return resultado;
}
private static float vehi2(float minuto, int moto) {
float resultado = minuto * moto;
return resultado;
}
private static float vehi3(float minuto, int bici) {
float resultado = minuto *bici;
return resultado;
}

public static int menuP() {
int opcion = 0;
while (opcion <1 || opcion >4) {
System.out.println("elija una opcion");
System.out.println("1. Factura");
System.out.println("2. Total facturado");
System.out.println("3. salir");
opcion = s.nextInt();
}
return opcion;
}
public static int menuV() {
int opcion = 0;
while(opcion <1 || opcion > 4){
System.out.println("Elija su vehiculo");
System.out.println("1. Carro");
System.out.println("2. Moto");
System.out.println("3. bicicleta");
System.out.println("4. volver");
opcion = s.nextInt();
}
return opcion;
}
}
Exception in thread "main" java.lang.NullPointerException
(Parqueadero2.java:77)
(Parqueadero2.java:22)
y estos son los errores que me arroja no se por donde puedo solucionarlos
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda a resolver un error

Publicado por Kabuto (1381 intervenciones) el 23/09/2021 00:22:55
No has inicializado el objeto Scanner.
Añade esto:
1
2
3
public class Parqueadero2 {
 
	static Scanner s = new Scanner(System.in);

Con eso ahora el programa ya inicia, pero los menús aún no funcionan bien. Hay que depurar el código.

Prueba e intenta solucionar lo que falla. Si te atascas, vuelve a pedir ayuda en este hilo y te ayudaremos.

Saludos.
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
sin imagen de perfil

ayuda a resolver un error

Publicado por juan (4 intervenciones) el 23/09/2021 00:49:48
muchas gracias deverdad voy tratar de relacionar todo pero deverdad muchas gracias cualquier cosa los vuelvo a molestar en un rato
me acaba de surgir otra duda en dado caso que quiera que un menu me devuleva al menu principal como hago lo meto en una en el swicth
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
sin imagen de perfil

ayuda a resolver un error

Publicado por juan (4 intervenciones) el 23/09/2021 01:20:52
ya solucione esa parte muchachos y ya puede que me den los resultados y todo lo de las operaciones mi otra duda es como hago para que me guarde y me sume el total de todos los ciclo??
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda a resolver un error

Publicado por Kabuto (1381 intervenciones) el 23/09/2021 12:26:46
A ver, no se como tendrás ahora tu código.
Yo he ido haciendo algunas correcciones, como eliminar instrucciones innecesarias:
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] agrs) {
 
		final int carro = 60;
		final int moto = 30;
		final int bici = 10;
 
		float minuto = 0, resultado = 0;
		float totalf = 0;
 
		resultado = totalf; //Innecesario, ambas variables tienen valor 0 en este momento
 
		int opcionP, opcionV;

O corregir las condiciones de algún menu:

1
2
3
4
5
6
7
8
9
10
11
public static int menuP() {
		int opcion = 0;
		while (opcion < 1 || opcion > 4) { //No es 4, debería ser 3
			System.out.println("elija una opcion");
			System.out.println("1. Factura");
			System.out.println("2. Total facturado");
			System.out.println("3. salir");
			opcion = s.nextInt();
		}
		return opcion;
	}

Y colocar la petición del menú principal DENTRO del while principal, de lo contrario dicho menú solo aparece una vez y luego no hay forma de terminar el programa.
Para que funcione bien, previamente hay que dar un valor inicial a la variable opcionP

1
2
3
4
5
6
int opcionP = 0, opcionV;
 
 
		while(opcionP !=3) {
 
			opcionP = menuP();


Tras estos y algún cambio más, la clase Parqueadero2 me ha quedado como pondré a continuación.
Marco en negrita la variable totalf porque ahora mismo no se está usando, y es la que vas a necesitar para poder acumular el total facturado.

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
public class Parqueadero2 {
 
	static Scanner s = new Scanner(System.in);
 
	public static void main(String[] agrs) {
 
		final int carro = 60;
		final int moto = 30;
		final int bici = 10;
 
		float minuto = 0, resultado = 0;
		float totalf = 0;
 
		int opcionP = 0, opcionV;
 
 
		while(opcionP !=3) {
 
			opcionP = menuP();
 
			if(opcionP == 1) {
				opcionV = menuV();
				System.out.println("Tiempo en minutos estacionado: ");
				minuto = s.nextFloat();
 
				switch(opcionV) {
				case 1:
					resultado = vehi1 (minuto, carro);
					break;
				case 2:
					resultado = vehi2 (minuto, moto);
					break;
				case 3:
					resultado = vehi3 (minuto, bici);
					break;
				default:
					System.out.println("Opcion no valida");
					break;
				}
			}
 
			if(opcionP ==2) {
				System.out.println("Total facturado en el dia "+ resultado);
				resultado += 1;
			}
 
		}
 
	}
 
	private static float vehi1(float minuto, int carro) {
		float resultado = minuto * carro;
		return resultado;
	}
 
	private static float vehi2(float minuto, int moto) {
		float resultado = minuto * moto;
		return resultado;
	}
 
	private static float vehi3(float minuto, int bici) {
		float resultado = minuto * bici;
		return resultado;
	}
 
	public static int menuP() {
		int opcion = 0;
		while (opcion < 1 || opcion > 3) {
			System.out.println("elija una opcion");
			System.out.println("1. Factura");
			System.out.println("2. Total facturado");
			System.out.println("3. salir");
			opcion = s.nextInt();
		}
		return opcion;
	}
 
	public static int menuV() {
		int opcion = 0;
		while(opcion < 1 || opcion > 4){
			System.out.println("Elija su vehiculo");
			System.out.println("1. Carro");
			System.out.println("2. Moto");
			System.out.println("3. bicicleta");
			System.out.println("4. volver");
			opcion = s.nextInt();
		}
		return opcion;
	}
 
}


Entonces, para poder acumular lo que se va facturando en cada ciclo, lo que haremos será que cada vez que se calcula el importe de la factura de un vehículo, primero lo vamos a mostrar en pantalla para informar del valor facturado, y luego lo vamos a sumar en la variable totalf.
Así esta variable irá acumulando la facturación total y será su valor el que mostraremos cuando se elija la opción 2 del menú.

Con los cambios que marco en negrita, creo que ya quedaría resuelto:

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
public static void main(String[] agrs) {
 
		final int carro = 60;
		final int moto = 30;
		final int bici = 10;
 
		float minuto = 0, resultado = 0;
		float totalf = 0;
 
		int opcionP = 0, opcionV;
 
 
		while(opcionP !=3) {
 
			opcionP = menuP();
 
			if(opcionP == 1) {
				opcionV = menuV();
				System.out.println("Tiempo en minutos estacionado: ");
				minuto = s.nextFloat();
 
				switch(opcionV) {
				case 1:
					resultado = vehi1 (minuto, carro);
					System.out.println("Importe facturado: " + resultado);
					totalf = totalf + resultado;
					break;
				case 2:
					resultado = vehi2 (minuto, moto);
					System.out.println("Importe facturado: " + resultado);
					totalf = totalf + resultado;
					break;
				case 3:
					resultado = vehi3 (minuto, bici);
					System.out.println("Importe facturado: " + resultado);
					totalf = totalf + resultado;
					break;
				default:
					System.out.println("Opcion no valida");
					break;
				}
			}
 
			if(opcionP ==2) {
				System.out.println("Total facturado en el dia: " + totalf);
			}
		}
	}

Si aún te queda alguna duda, solo tienes que preguntar.
Un saludo.
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
sin imagen de perfil

ayuda a resolver un error

Publicado por juan (4 intervenciones) el 23/09/2021 16:29:45
quedo perfecto muchisimas gracias por su ayuda me di cuenta del error y deverdad aprendi bastante muchas gracias
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