• Martes 19 de Marzo de 2024, 10:41

Autor Tema:  Este codigo no me corre como deberia  (Leído 3148 veces)

Josmer12j

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Este codigo no me corre como deberia
« en: Lunes 22 de Julio de 2019, 21:21 »
0
Este codigo deberia ser, como un elevador de 12 pisos, y me debe pedir a que piso debe ir y si es uno mal me diga que no, pero cuando ingreso el piso me repite la pregunta.

Aqui el codigo:

Código: [Seleccionar]
internal class Program
 {
     private const string QUIT = "q";

     public static void Main(string[] args)
     {
         Console.WriteLine("Sientase bienvenido al edificio Josmer");
         Elevator ascensor = new Elevator();

         string input = string.Empty;
         while (input != QUIT)
         {
             Console.WriteLine("Por favor, presione al piso que usted desea ir");
             input = Console.ReadLine();

             if (int.TryParse(input, out int piso))
                 ascensor.FloorPress(piso);
             else if (input == QUIT)
                 Console.WriteLine("Adiocito!");
             else
                 Console.WriteLine("Ese piso no existe, presione nuevamente!");
          }
     }
 }

 public class Elevator
 {
     private const int pisofinal = 12;
     private int _actual = 1;

     public void FloorPress(int piso)
     {
         if (piso < 1 || piso > 12)
            Console.WriteLine("Solo 1 al 12 o q para salir");
            return;
         if (piso - _actual < 0 && _actual > 1)
             bajar(piso);
         else if (piso - _actual > 0 && _actual < pisofinal)
             subir(piso);
         else
             Stop(piso);
     }

     private void subir(int piso)
     {
         for (int i = _actual; i <= piso; i++)
         {
             Console.WriteLine($"Subiendo...{i}");
             Thread.Sleep(500);
         }
         Stop(piso);
     }

     private void bajar(int piso)
     {
         for (int i = _actual; i >= piso; i--)
         {
             Console.WriteLine($"Bajando...{i}");
             Thread.Sleep(500);
         }
         Stop(piso);
     }

     private void Stop(int piso)
     {
         _actual = piso;
         Console.WriteLine("Estamos en el piso {0}", piso);
     }
 }

emily22

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Este codigo no me corre como deberia
« Respuesta #1 en: Martes 13 de Agosto de 2019, 18:14 »
0
Debes salirte del bucle while, para que no siga preguntando. puedes usar "return;" o "break;"