#c#
#c#
Вопрос:
Я использовал Try.Parse, чтобы убедиться, что программа принимает только целые числа. Когда я ввожу целое число, это работает и переходит к следующей части моей программы, но когда я ввожу десятичное число, программа переходит к оператору else, как и должно быть, где говорится, что десятичные дроби недопустимы, и запрашивается целое число. Поэтому, когда я запускаю программу и ввожу целое число, она просто продолжает запрашивать все больше и больше целых чисел и не учитывает, что я только что ввел целое число. Итак, после ввода десятичной дроби я попадаю туда. Затем я ввожу целое число, и он продолжает воспроизводить мой запрос на другое целое число.
Я только начал кодировать, так что простите меня, если это очень просто, но я не могу обмозговать это. Я хочу, чтобы компьютер воспринял и обработал то, что я ввел в виде целого числа, и перешел к следующему оператору.
Объяснение было бы действительно полезным! заранее благодарю вас.
Комментарии:
1.
inputcost
никогда не меняется.2. Хорошо, вы вызываете int. Попробуйте выполнить Parse() два раза подряд с одинаковыми параметрами. В первый раз вы сохраняете возвращаемое значение как
result
. Затем вы называете это условием awhile
. Еслиresult
равно false, тело while никогда не будет выполнено, никогда . Единственное другое место, которое вы проверяете наresult
ложность, находится внутри цикла while, что, как вы убедились, в этом случае не может произойти.3. Также вы можете написать
if (result)
вместоif (result == true)
.
Ответ №1:
вам необходимо обновить result
и inputcost
внутри цикла
while (!result)
{
Console.Write("Please Enter A Valid Integer Value");
Console.WriteLine();
inputcost = Console.ReadLine();
result = int.TryParse(inputcost, out validcost);
}
Console.Write("Valid Value");
Ответ №2:
Значение inputcost задается в вашем коде только один раз. Вам нужно обновить его в вашем цикле while.
Смотрите предложение false в цикле while:
статическая пустота Main(строка[] аргументов) {
string inputcost;
string inputmoney;
int validcost;
Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: ");
inputcost = Console.ReadLine();
bool result = int.TryParse(inputcost, out validcost);
while (!int.TryParse(inputcost, out validcost))
{
if (result == true)
{
Console.Write("Valid Value");
}
if (result == false)
{
Console.Write("Please Enter A Valid Integer Value");
Console.WriteLine();
inputcost = Console.ReadLine();
}
}
Комментарии:
1. Как вы думаете, сколько раз будет выполняться этот
while
блок цикла, еслиresult
значение false?