2016-01-22 2 views
-3

Я знаю, что для чтения ввода с использованием метода Convert.To, но есть ли способ читать, кроме этого.Альтернатива для чтения целого числа в C#

int k = Convert.ToInt16(Console.ReadLine()); 
+0

Не делайте этого, что хотите? – HimBromBeere

+2

На самом деле вы должны использовать 'Convert.ToInt32'. Там также 'int.Parse'. –

+0

да, но я хочу, есть ли какой-либо другой метод –

ответ

5

Для простого метода для чтения ввода из консольного приложения является 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 заключается в том, что вы можете проверить, если возможно преобразование в целое число. Другие методы вместо этого создают исключение, которое вы должны обрабатывать, затрудняя поток вашего кода.

+1

У вас есть ошибка времени компиляции, потому что переменная 'k' не инициализирована. Кроме того, 'Console.WriteLine (" This: "+ k +" не является допустимым целым числом ");' не отображает вход пользователя wrond – Michael

+0

Вы, конечно же, правы.Не думая прямо, в моей защите я мог бы сказать, что я положил Console.WriteLine с значением k в качестве запоздалой мысли, чтобы показать ошибку – Steve

1

вы можете использовать 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(); 
1

Вот альтернативный и лучший method что вы можете следовать:

int k; 
if (int.TryParse(Console.ReadLine(), out k)) 
    { 
     //Do your stuff here 
    } 
else 
    { 
     Console.WriteLine("Invalid input"); 
    } 
3

Вы можете создать свою собственную реализацию для консоли и использования это везде, где вы хотите:

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(); 
    } 

} 
+0

, это как функция, определенная пользователем –

+0

Это просто функции, определенные пользователем) – Michael

+0

Okay Thanks @ VMA –

1

Есть 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.

Смежные вопросы