Вы можете сделать do-While
здесь:
Обычно, когда вы делаете do-while
, вы заставляете код на do
выполняться до тех пор, пока условие в while
не будет выполнено. в вашем случае вам нужно добавить проверку номера pohne внутри оператора do
и узнать, выбрал ли человек правильное значение, вы можете сделать Array.FindIndex()
: это будет ваш do-while
l oop Также я изменил вашу x
для index
попытки использовать имена для переменных, которые имеют некоторое значение. (индекс не идеален в любом случае)
do
{
Write("Enter in the area code you want to call: ");
areaCode = Convert.ToInt32(ReadLine());
index = Array.FindIndex(phoneAreacode, w => w == areaCode);
if (index >= 0)
{
validAreacode = true;
}
else
{
WriteLine("YOU MUST ENTER A VALID AREA CODE!");
}
} while (!validAreacode);
, и это будет весь ваш основной метод:
int[] phoneAreacode = { 608, 414, 262, 815, 715, 920 };
double[] phoneCost = { .05, .10, .07, .24, .16, .14 };
// declaring variables //
int index;
int areaCode;
int callLength;
bool validAreacode = false;
// start of actual code //
do
{
Write("Enter in the area code you want to call: ");
areaCode = Convert.ToInt32(ReadLine());
index = Array.FindIndex(phoneAreacode, w => w == areaCode);
if (index >= 0)
{
validAreacode = true;
}
else
{
WriteLine("YOU MUST ENTER A VALID AREA CODE!");
}
} while (!validAreacode);
Write("Enter in the length of your call: ");
callLength = Convert.ToInt32(ReadLine());
double finalCost = callLength * phoneCost[index];
WriteLine("Your call to area code " + areaCode + " for " + callLength + " minutes will cost " + finalCost.ToString("C"));
, как вы можете видеть, вы также можете удалить while
, который вы должны oop массив и if-else
для действительных кодов. Предполагая, что когда код достигнет точки, область будет правильной.
Хорошей практикой является попытка удалить сумму if-else
.