Я продолжаю разрабатывать программу в консоли, в которой симулируется лифт. У здания есть только 30 квартир и пока я стараюсь создавать условие для того, чтобы однажды пользователь поднялся или загрузился в X квартиру, вернулись он, чтобы спрашивать, что, если он хочет согласиться на другую квартиру, но оно просто не функционирует.
Здесь то, что я приношу на данный момент:
string userInput;
short floorNumber;
bool wantsToContinue;
bool isInvalid = true;
Console.Clear();
Console.WriteLine("Bienvenido! El edificio cuenta con un total de 30 pisos. \nPara subir digite la letra S, para bajar digite la letra B");
Console.Write("Seleccione una opción ==> ");
do
{
userInput = Console.ReadLine().ToUpper();
if (userInput != "S" && userInput != "B")
Console.Write("Opción inválida, intente de nuevo ==> ");
else
break;
} while (true);
do
{
if (userInput == "S") {
Console.WriteLine();
Console.Write("A continuación indique el piso al que desea subir ==> ");
floorNumber = Convert.ToInt16(int.Parse(Console.ReadLine()));
while (floorNumber < 30 && floorNumber > 1)
{
Console.WriteLine("Subiendo...");
Console.WriteLine($"Ahora te encuentras en el piso {floorNumber}");
Console.ReadLine();
}
}
if (userInput == "B")
{
Console.WriteLine();
Console.Write("A continuación indique el piso al que desea bajar ==> ");
floorNumber = Convert.ToInt16(int.Parse(Console.ReadLine()));
while (floorNumber < 30 && floorNumber > 1)
{
Console.WriteLine("Bajando...");
Console.WriteLine($"Ahora te encuentras en el piso {floorNumber}");
Console.ReadLine();
}
}
Console.WriteLine();
Console.Write("Desea acceder a otro piso? (s/n) ==> ");
userInput = Console.ReadKey().KeyChar.ToString();
if (userInput == "n")
{
wantsToContinue = false;
}
else if (userInput == "s")
{
wantsToContinue = true;
}
else
{
wantsToContinue = true;
while (isInvalid)
{
Console.Write("\nOpción inválida intente de nuevo: ");
userInput = Console.ReadKey().KeyChar.ToString();
if (userInput == "n" || userInput == "s")
{
isInvalid = false;
}
}
}
Console.Clear();
} while (wantsToContinue) ;
Поскольку они могут наблюдать функцию, она является осуществленной, но мне не удается способствовать тому, чтобы он выполнил Ваше поручение, которое разом, пользователь прибыл в квартиру, в которую он хотел пойти, я спросил у него, хочет ли он согласиться на другую квартиру или нет но он однажды показывает сообщение показывая пользователю квартиру, в которой он находится он повторяется снова и снова всякий раз когда выходят ему на клавишу, не показывая следующего сообщения, которое было бы
Console.Write("Desea acceder a otro piso? (s/n) ==> ");
Я думал из-за много промежутка времени, но искренне я не нашел решение и поэтому я обращаюсь к Вам.
Спасибо заранее
То, что я не наблюдаю в коде, где ты увеличиваешь, или decrementas переменная floorNumber
для того, чтобы он отразил прибытие в эту квартиру, или, может быть, не один while
, который ты был бы должен использовать, а один if
я думаю, что ты мог бы упрощать много код снимая повторенное, что-то как это
Console.Clear();
do
{
Console.WriteLine("Bienvenido! El edificio cuenta con un total de 30 pisos. \nPara subir digite la letra S, para bajar digite la letra B");
Console.Write("Seleccione una opción ==> ");
string userInput;
do
{
userInput = Console.ReadLine().ToUpper();
if (userInput == "S" || userInput == "B")
break;
Console.Write("Opción inválida, intente de nuevo ==> ");
} while (true);
Console.WriteLine();
Console.Write("A continuación indique el piso al que desea {0} ==> ", userInput == "S" ? "subir" : "bajar");
short floorNumber = Convert.ToInt16(int.Parse(Console.ReadLine()));
if (floorNumber < 30 && floorNumber > 1)
{
Console.WriteLine(userInput == "S" ? "Subiendo..." : "Bajando...");
Console.WriteLine($"Ahora te encuentras en el piso {floorNumber}");
}
Console.ReadLine();
char otropiso;
do
{
Console.Write("Desea acceder a otro piso? (s/n) ==> ");
char otropiso = Console.ReadKey().KeyChar;
if (otropiso == 'n' || otropiso == 's')
break;
Console.Write("\nOpción inválida intente de nuevo: ");
}while(true);
if (otropiso == 'n')
break;
Console.Clear();
}while(true);
краев, которые возможно использовать break
или continue
, как ты захотел вернуться в начале do..while
, Кроме того измените while
, которые он санкционирует, к которому квартира ты хочешь пойти из-за одного if
, если ты хотел отразить, как он двигается из-за квартир, ты был бы должен складывать или отрицать переменную у desptino от настоящей квартиры, но для этого ты будешь должен сохранять, который является квартирой, в которой он находится, и так отражать движение
Также используйте if en linea
, чтобы мочь повторно использовать код, как он пересылает или загружает менять тексты
Чтобы сравнивать, если два объекта типа string равны, использует ее funciГіn Equals ().
Пример:
string a1,a2;
a1 = "A";
a2 = "A";
if (a1.Equals(a2)){
Console.WriteLine("Iguales!");
}
else{
Console.WriteLine("Distintos!");
}