2015-03-13 1 views
0

У меня есть одна проблема с преобразованием слова в int. Это плохо написано?Преобразование строки в int C# и место в массиве

foreach (string line in lines) 
     { 
      string[] words = line.Split(' '); 
      foreach (string word in words) 
      { 

       { 
        tab[i] = Int32.Parse(word); 
        Console.WriteLine(tab[i]); 
        i++; 

       } 
      } 
     } 

На этих линии:

tab[i] = Int32.Parse(word); 

У меня есть ошибка:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

файл:

0

12 0

19 15 0

31 37 50 0

22 21 36 20 0

17 28 35 21 25 0

+0

Что такое слово, которое вы пытаетесь преобразовать? Как выглядит ваша строка? –

+0

Слово - это одно слово –

+4

При размещении вопроса, пожалуйста, укажите все необходимые входные и желаемые выходы. (И в этом случае вход очень важен). –

ответ

0

Это значит, что у вас что-то не так. Подумайте об использовании Int.TryParse, который будет работать, предполагая, что вы только хотите использовать хорошо сформированные целые числа. Вы могли бы также выработать некоторый результат при неспособности дать вам представление о том, какие значения не удается проанализировать, например

bool b; 
int tempNumber; 
foreach (string line in lines) 
{ 
    string[] words = line.Split(' '); 
    foreach (string word in words) 
    { 
     b = Int32.TryParse(word, out tempNumber); 
     if (b) // success 
     { 
      tab[i] = tempNumber; 
      Console.WriteLine(tab[i]); 
      i++; 
     } 
     else // handle error 
     { 
      Console.WriteLine("Error: '" + word + "' could not be parsed as an Int32"); 
     } 
    } 
} 
+0

Большое вам спасибо! :) –

0

Ваша строка не представляет собой чистую Int. Вероятно, число с десятичными знаками? (например, 5.5?) Чтобы поймать и распечатать слово, вы можете просто использовать try/catch.

+0

Спасибо за ответ. Но убедитесь, что был OP i/p и что ожидалось o/p – Backtrack

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