TryParse становится раздражающим
У меня возникла эта действительно раздражающая проблема (я знаю, что это основные вещи), но когда я пытаюсь использовать tryparse, мне нужно ввести 2 значения, прежде чем он скажет целое число, я хочу, чтобы он сказал целое число после 1 попытки. (кстати, я должен использовать tryparse) вот пример.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int results = 0;
Console.WriteLine("how old are you?");
int.TryParse (Console.ReadLine(), out results);
if (int.TryParse (Console.ReadLine(), out results))
{
Console.WriteLine("integer");
}
else
{
Console.WriteLine("not an integer");
}
Console.ReadLine();
}
}
}
4 ответа
Избавьтесь от первого избыточного вызова TryParse
например
class Program
{
static void Main(string[] args)
{
int results = 0;
Console.WriteLine("how old are you?");
//int.TryParse(Console.ReadLine(), out results); <-- remove this
if (int.TryParse (Console.ReadLine(), out results))
{
Console.WriteLine("integer");
}
else
{
Console.WriteLine("not an integer");
}
Console.ReadLine();
}
}
Используйте переменные для Console.ReadLine()
а также int.TryParse
:
Console.WriteLine("how old are you?");
string input = Console.ReadLine().Trim();
bool success = int.TryParse(input, out results);
if ( success )
{
Console.WriteLine("{0} is an integer", input); // results has the correct value
}
else
{
Console.WriteLine("{0} is not an integer", input);
}
Int32.TryParse преобразует строковое представление числа в его 32-разрядный эквивалент целого числа со знаком.
Возвращаемое значение указывает, успешно ли выполнено преобразование.
Таким образом, вы всегда можете использовать это так.
if (int.TryParse (Console.ReadLine(), out results))
{
Console.WriteLine("integer");
}
Помимо других ответов вы можете сделать TryParse
в while loop
так что пользователи должны ввести действительное целое число
while(!int.TryParse(ConsoleReadLine(), out results)
Console.WriteLine("not an integer");
ConsoleWriteLine("integer");
Чтобы лучше объяснить вашу текущую проблему, вы просите пользователя ввести два целых числа, но вас всегда волнует только второе. Первый назначен results
но тогда он будет отменен при следующем вызове TryParse
без использования