Java - Controlar un elevador

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Controlar un elevador

Publicado por Gibran (1 intervención) el 24/04/2020 17:10:30
El ejercicio que van a presentar es el siguiente.
Van a gestionar para un edificio su elevador, es decir van a controlar si suben o bajan, para ello, el elevador no puede llevar más de 750 kg. Y no puede bajar menos del piso 1 y no puede subir más del piso final.
Por lo tanto ustedes van a pedir, en primera instancia de cuantos pisos en es edificio, si quieren subir o bajar y cuantas personas suben o bajan (supongamos que cada persona pesa 50kg).
Los métodos subir y bajar los van a crear en en ciclo, tipo menú
1 subir
2 bajar
3 salir.
Al final crean un objeto de tipo edificio y mandamos a llamar los métodos del elevador.
El programa deberá de ir validado, con excepciones y comentado.
A las 9 comienzo a revisar les, por lo que ustedes deberán estar atentos, ya que iniciaré aleatoriamente en los 3 grupos.
Buena suerte y éxito.
Cómo sugerencia, aludiendo qué haga un grupo de WhatsApp para que ahí vaya diciendo S sufren voy a revisar, por favor, los que están en final, Compartan su número, para de igual forma resolver les dudas de manera general.


ESTE ES EL EJERCICIO ES PARA UN EXAMEN, LA VERDAD ESTA FACIL, PERO YO TODAVIA SOY PRIMERIZO EN ESTO, POR FAVOR SI ME AYUDAN ME HAGO MONJE IRE A LA IGLESIA O ALGO ASI, USTEDES SI SABEN POR FAVOR SI VOY A CHILLAR, PASENMELO
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

Controlar un elevador

Publicado por Kabuto (1381 intervenciones) el 25/04/2020 00:52:43
Hola.
He escrito un código, no se si te servirá porque no he hecho métodos subir() y bajar().
Y no los he hecho porque no les veo ningún sentido.
Sí, un ascensor sube y baja, pero en realidad cuando usamos un ascensor, no le pedimos que suba o baje. Tan solo indicamos un piso destino.

Así que ese es el método que le he puesto a mi Ascensor, solo necesita saber cuantas personas suben y cuál es el piso destino.
Se podría haber hecho un método subir y otro bajar, pero es que tendrían exactamente el mismo código.
Esto no va de sumar o restar.

Pero bueno, yo comparto el código y al menos puede que te sirva para sacar ideas.

Esta es la clase Ascensor.
Tiene tres atributos, el peso máximo que es un valor constante, el piso final, o sea, el más alto, que se le indicará mediante constructor, y el piso actual donde se encuentra en cada momento el ascensor.

Cuenta con dos métodos, un getter para el piso actual y el más importante, el método desplazar()

Recibe dos datos por parámetros, cantidad de personas y piso destino.
Con esos datos analiza si es posible el desplazamiento. Si no es posible (porque se supera el peso, porque se ha indicado un piso inexistente, porque el ascensor ya se encuentra en el piso indicado..) entonces el método lanzará una excepción con un mensaje descriptivo de por qué se ha anulado el desplazamiento.

Si los datos son aceptables, se actualiza el valor de pisoActual según el pisoDestino indicado.

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
/**
 * Simula el desplazamiento de un ascensor que puede viajar desde el piso 1
 * hasta el piso final que se indique mediante el constructor.<br>Cuenta con
 * una limitación de peso de 750Kg.<br>Para realizar el desplazamiento hay que
 * indicar la cantidad de personas que se suben y el piso destino. La cantidad de
 * personas se usa para calcular el peso ha desplazar (considerando que cada persona
 * pesa 50kg).<br>
 * El método para desplazar lanzará distintas excepciones según si se ha superado el peso
 * máximo, si el piso destino está fuera de rango o si el ascensor ya se encuentra actualmente
 * en el piso indicado como destino.
 * @author Kabuto
 */
public class Ascensor {
 
	private final int PESO_MAX = 750;
	private int pisoFinal;
	private int pisoActual;
 
	public Ascensor(int pisoFinal) {
		this.pisoFinal = pisoFinal;
		pisoActual = 1; //Ascensor comienza en planta baja
	}
 
	/**
	 * Desplaza el ascensor con la cantidad de personas indicada, al piso escogido
	 * @param personas Cantidad de personas que entran al ascensor
	 * @param pisoDestino Piso al que se desplazará el ascensor
	 * @throws Exception Habrán excepciones si se supera el peso máximo, si se ha
	 * elegido un piso fuera de rango o si el ascensor ya se encuentra en el piso
	 * escogido como destino.
	 */
	public void desplazar(int personas, int pisoDestino) throws Exception {
 
		if (personas * 50 > PESO_MAX)
			throw new Exception("Peso máximo superado");
		if (pisoDestino < 1)
			throw new Exception("No existen plantas por debajo del piso 1");
		if (pisoDestino > pisoFinal)
			throw new Exception("No existen plantas por encima del piso " + pisoFinal);
		if (pisoActual == pisoDestino)
			throw new Exception("Ascensor ya se encuentra en el piso " + pisoDestino);
		//Si no ha saltado ninguna excepción, podemos desplazar el Ascensor
		pisoActual = pisoDestino;
	}
 
	/**
	 * Informa de en cuál piso se encuentra ahora
	 * el ascensor
	 * @return Piso actual
	 */
	public int getPisoActual() {
		return pisoActual;
	}
 
}

Luego, un programa main para testear el ascensor.
Todos los datos solicitados se controlan con try catch para impedir cualquier excepción.
Primero se pregunta cuál es el piso final del edificio, dato con el cuál podemos construir un objeto Ascensor.

Luego se muestra menú con solo dos opciones, desplazar ascensor o salir del programa (insisto que lo de subir y bajar no le veo sentido).

Si elige desplazar, se llama a un procedimiento que se encarga de pedir los datos necesarios para que el ascensor pueda desplazarse.

En realidad, todo es muy sencillo.

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
public class TestAscensor {
 
	//Este será nuestro Ascensor
	private static Ascensor ascensor = null;
 
	private static Scanner teclado = new Scanner(System.in);
 
	public static void main(String[] args) {
 
 
		///Intentamos construir un Ascensor, necesitamos usuario propocione un piso máximo aceptable
		while (ascensor == null) {
			System.out.print("Indique cuál es el piso más alto del edificio: ");
			try {
				int pisoFinal = Integer.parseInt(teclado.nextLine());
				if (pisoFinal < 2)
					System.out.println("Valor inaceptable. Edificio ha de tener mínimo dos pisos");
				else
					ascensor = new Ascensor(pisoFinal); //Podemos construir un Ascensor
			} catch(NumberFormatException ex) {
				System.out.println("Introduzca un valor entero mayor que 1");
			}
		}
 
		//Tenemos ascensor, abrimos menu
		int opcion = 0;
		while (opcion != 2) {
			System.out.println("\nPiso Actual: " + ascensor.getPisoActual());
			System.out.println("[1] - Desplazar ascensor");
			System.out.println("[2] - Salir del programa");
			System.out.print("Escoja opción: ");
			try {
				opcion = Integer.parseInt(teclado.nextLine());
				switch(opcion) {
				case 1:
					desplazar();
					break;
				case 2:
					System.out.println("\nFIN DE PROGRAMA");
					break;
				default:
					System.out.println("Elija entre los valores 1 y 2");
				}
			} catch (NumberFormatException ex) {
				System.out.println("Elija entre los valores 1 y 2");
			}
		}
 
	}
 
	/**
	 * Pide el número de personas que suben al ascensor y el piso destino
	 * para ordenar al ascensor que se desplace.
	 */
	static void desplazar() {
		try {
			System.out.print("\n¿Cuántas personas suben al ascensor?: ");
			int personas = Integer.parseInt(teclado.nextLine());
			System.out.print("¿Piso destino?: ");
			int destino = Integer.parseInt(teclado.nextLine());
			ascensor.desplazar(personas, destino);
		} catch(NumberFormatException ex) {
			System.out.println("Error. Solo se admiten números enteros.");
		} catch (Exception e) { //Aquí capturamos las excepciones que lanza el Ascensor
			System.out.println(e.getMessage());
		}
	}
 
}

Si ejecutamos, en pantalla podemos probar las posibles excepciones programadas y el control de datos validados.

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
Indique cuál es el piso más alto del edificio: dsfg
Introduzca un valor entero mayor que 1
Indique cuál es el piso más alto del edificio: 30
 
Piso Actual: 1
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 890
¿Piso destino?: 5
Peso máximo superado
 
Piso Actual: 1
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 4
¿Piso destino?: asfda
Error. Solo se admiten números enteros.
 
Piso Actual: 1
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 3
¿Piso destino?: 500
No existen plantas por encima del piso 30
 
Piso Actual: 1
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 5
¿Piso destino?: 12
 
Piso Actual: 12
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 3
¿Piso destino?: 22
 
Piso Actual: 22
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 1
¿Piso destino?: 30
 
Piso Actual: 30
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 1
 
¿Cuántas personas suben al ascensor?: 1
¿Piso destino?: 1
 
Piso Actual: 1
[1] - Desplazar ascensor
[2] - Salir del programa
Escoja opción: 2
 
FIN DE PROGRAMA

Pruébalo, y si tienes dudas, a 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
-1
Comentar

Controlar un elevador

Publicado por Charly (1 intervención) el 12/06/2021 20:11:32
Si tuvieras el codigo del programa seria de gran ayuda por que no puedo realizar asi como lo hiciste me da errores
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

Controlar un elevador

Publicado por Kabuto (1381 intervenciones) el 12/06/2021 23:55:19
El código que tengo es el mismo que publiqué aquí. ¿Qué errores te da?
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