Я знаю, что для чтения ввода с использованием метода Convert.To
, но есть ли способ читать, кроме этого.Альтернатива для чтения целого числа в C#
int k = Convert.ToInt16(Console.ReadLine());
Я знаю, что для чтения ввода с использованием метода Convert.To
, но есть ли способ читать, кроме этого.Альтернатива для чтения целого числа в C#
int k = Convert.ToInt16(Console.ReadLine());
Для простого метода для чтения ввода из консольного приложения является Console.ReadLine
. Возможны альтернативы, но они более сложны и зарезервированы для особых случаев: см. Console.Read или Console.ReadKey.
Что важно, однако, является преобразование в целое число, которое не должно быть сделано с помощью Convert.ToInt32
или Int32.Parse
но с Int32.TryParse
int k = 0;
string input = Console.ReadLine();
if(Int32.TryParse(input, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + input + " is not a valid integer");
Причина использования Int32.TryParse
заключается в том, что вы можете проверить, если возможно преобразование в целое число. Другие методы вместо этого создают исключение, которое вы должны обрабатывать, затрудняя поток вашего кода.
У вас есть ошибка времени компиляции, потому что переменная 'k' не инициализирована. Кроме того, 'Console.WriteLine (" This: "+ k +" не является допустимым целым числом ");' не отображает вход пользователя wrond – Michael
Вы, конечно же, правы.Не думая прямо, в моей защите я мог бы сказать, что я положил Console.WriteLine с значением k в качестве запоздалой мысли, чтобы показать ошибку – Steve
вы можете использовать int.TryParse
см пример
var item = Console.ReadLine();
int input;
if (int.TryParse(item, out input))
{
// here you got item as int in input variable.
// do your stuff.
Console.WriteLine("OK");
}
else
Console.WriteLine("Entered value is invalid");
Console.ReadKey();
Вот альтернативный и лучший method что вы можете следовать:
int k;
if (int.TryParse(Console.ReadLine(), out k))
{
//Do your stuff here
}
else
{
Console.WriteLine("Invalid input");
}
Вы можете создать свою собственную реализацию для консоли и использования это везде, где вы хотите:
public static class MyConsole
{
public static int ReadInt()
{
int k = 0;
string val = Console.ReadLine();
if (Int32.TryParse(val, out k))
Console.WriteLine("You have typed a valid integer: " + k);
else
Console.WriteLine("This: " + val + " is not a valid integer");
return k;
}
public static double ReadDouble()
{
double k = 0;
string val = Console.ReadLine();
if (Double.TryParse(val, out k))
Console.WriteLine("You have typed a valid double: " + k);
else
Console.WriteLine("This: " + val + " is not a valid double");
return k;
}
public static bool ReadBool()
{
bool k = false;
string val = Console.ReadLine();
if (Boolean.TryParse(val, out k))
Console.WriteLine("You have typed a valid bool: " + k);
else
Console.WriteLine("This: " + val + " is not a valid bool");
return k;
}
}
class Program
{
static void Main(string[] args)
{
int s = MyConsole.ReadInt();
}
}
, это как функция, определенная пользователем –
Это просто функции, определенные пользователем) – Michael
Okay Thanks @ VMA –
Есть 3 типа целых чисел:
1.) Short Integer: номер 16bit (от -32768 до 32767). В C# вы можете объявить короткую целочисленную переменную как short
или Int16
.
2.) "Normal" Integer: 32-разрядное число (-2147483648 до 2147483647). Объявите целое число с ключевыми словами int
или Int32
.
3.) Long Integer: 64-разрядное число (-9223372036854775808 до 9223372036854775807). Объявите длинное целое число с long
или Int64
.
Разница в диапазоне чисел, которые вы можете использовать. Вы можете конвертировать их с помощью Convert.To
, Parse
или TryParse
.
Не делайте этого, что хотите? – HimBromBeere
На самом деле вы должны использовать 'Convert.ToInt32'. Там также 'int.Parse'. –
да, но я хочу, есть ли какой-либо другой метод –