Если вы хотите, чтобы каждый вход равнялся l oop, пока не будет выполнено определенное требование, вам потребуется более одного l oop.
Однако есть умные способы избежать многократных циклов, написав свой метод как рекурсивный метод .
Если вы не знакомы с рекурсивными методами, это в основном метод, который вызывает себя внутри метода. Используя умные параметры, вы можете использовать рекурсивный метод как al oop. Например, простой рекурсивный метод
void loop(int index) {
if(index == 10) { //recursive methods needs a terminating condition or else it would loop forever
return; //End loop
}
System.out.println(index);
loop(index++); //note that the method is called inside itself here
}
путем вызова loop(1)
будут напечатаны числа от 1 до 9.
Переписывание вашего метода в рекурсивный метод лучше всего разбить на два методы, один из которых не является рекурсивным, который инициализирует каждый параметр, и один рекурсивный метод, который выполняет фактический цикл.
Инициализация нерекурсивного метода
private static void AddToStock()
{
int itemid = ReadInteger("\nItem ID:");
string itemname = ReadString("Item Name:");
int itemquantity = ReadInteger("Quantity:");
double itemprice = ReadDouble("Price Paid:");
DateTime itemdate = ReadDate("Date Added:");
AddToStockLoop(itemid, itemquantity, itemprice); //start the recursive loop with the initial values of the three parameters
}
и рекурсивный метод цикла
private static void AddToStockLoop(int itemid, int itemquantity, double itemprice)
{
if (itemid <= 0)
{
Console.WriteLine("Item ID Cannot Be Less Than 1, Please Try Again");
itemid = ReadInteger("Item ID:");
AddToStockLoop(itemid, itemquantity, itemprice); //Recursive call now with a new value of the paramter itemid
}
if (itemquantity <= 0)
{
Console.WriteLine("Quantity Cannot Be Less Than 1, Please Try Again");
itemquantity = ReadInteger("Quantity:");
AddToStockLoop(itemid, itemquantity, itemprice); //Recursive call now with a new value of the paramter itemquantity
}
if (itemprice < 0.01)
{
Console.WriteLine("Item Price Cannot Be Less Than 0, Please Try Again");
itemprice = ReadDouble("Item Price:");
AddToStockLoop(itemid, itemquantity, itemprice); //Recursive call now with a new value of the paramter itemprice
}
}
Написание рекурсивных методов для небольших и простых программ не обязательно полезно, но они могут быть очень мощными для более сложных программ, где полезно обратное отслеживание.