SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Josmer12j en Lunes 22 de Julio de 2019, 21:21
-
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:
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);
}
}
-
Debes salirte del bucle while, para que no siga preguntando. puedes usar "return;" o "break;"